如何在sqlDataSource的select参数中使用数据绑定?

How to use data binding in select parameter of sqlDataSource?

我有一个 sqlDataSource,我在其中使用 select 参数,如下所示:

<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
  SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"     
  ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>" RunAt="server">
  <SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="<%#userid%>" />
  </SelectParameters>    
</asp:sqlDataSource>

在我的后台代码中,我给userId赋了一个值,还写了this.DataBind();

数据绑定无效。有谁知道解决这个问题的方法吗?

一种方法是在 Page_Load 事件后面的代码中或绑定变量后使用 userid 变量设置值。

 //set SqlDataSource parameters value with empID as your variable
EmployeeDetailsSqlDataSource.SelectParameters.Add("@EmpID", userID);

Asp:

 <asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
          SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"
          RunAt="server"> 
<SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
      </SelectParameters>
        </asp:sqlDataSource>

另一种选择是在数据检索之前发生的选择事件中设置来自代码的值。

SqlDataSource.Selecting Event

这里有一个link更完整的例子Full Example

<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
          SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"
          RunAt="server" OnSelecting=OnSelectingHandler">
 <SelectParameters>
<asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
 </SelectParameters>
 </asp:sqlDataSource>

后面的代码:

Public void OnSelectingHandler(object sender, SqlDataSourceSelectingEventArgs e)
{

e.Command.Parameters[0].Value=userID;

}