ASP.NET SqlDataSource以编程方式设置SessionParameter

时间:2010-09-06 22:12:22

标签: asp.net sqldatasource

我有一个名为“usp_posts_getall”的StoredProcedure,它有一个名为“@thisCategoryID”的参数

在我的“thisCategoryID”中,除0(零)以外的任何值都将返回我的帖子表中的所有记录。

现在我有一个类别菜单项,每次选择时,我都会在我的会话名称中设置名为“SelectedCID”的值。

那么,我怎么...... 在SqlDataSource中以编程方式创建SessionParameter?


更新:
好。我现在就开始工作了。

1 个答案:

答案 0 :(得分:1)

如果它是SqlDataSource使用的会话参数,那么您可以在会话中设置值,例如Page_Load()

Session["thisCategoryID"] = theCategoryId;

(我是否误解了这个问题?)

好的,更新:

我认为你可以为SqlDataSource.OnSelecting事件创建一个事件处理程序。在该处理程序中,您可以访问数据源的Parameters集合,并可以向其添加另一个参数。我目前无法测试以下代码,因此可能不完全正确,但我希望您能看到这个想法:

SqlDataSource1_OnSelecting(SqlDataSourceSelectingEventArgs args)
{
  var param = new Parameter("@thisCatagoryID");
  param.DefaultValue = Session["SelectedCID"]; 
  SqlDataSource1.SelectParameters.Add(param);  
}

或者,您可以在标记中以声明方式设置参数,例如:

<asp:SqlDataSource ...>
  <SelectParameters>
    <asp:SessionParameter Name="thisCategoryID" SessionField="SelectedCID"
      DefaultValue="0" />
    ...
  </SelectParameters>
</asp:SqlDataSource>