2012-05-22 38 views
1

我想将一个变量传递给SqlDataSource中的SelectCommand。我有这个需要通过的MyIdVal。SqlDataSource传递变量

下面是代码:

<form id="form1" runat="server"> 

<div> 
<%=MyIdVal%> 
</div> 
<asp:GridView ID="GridView1" runat="server" DataSourceID="myIdDataSource"> 
</asp:GridView> 
<asp:SqlDataSource runat="server" ID="myIdDataSource" 
    ConnectionString="<%$ ConnectionStrings:myCipConnection %>" 
    ProviderName="<%$ ConnectionStrings:myCipConnection.ProviderName %>" 
    SelectCommand="SELECT * FROM books WHERE id = @MyIdVal" > 

    </asp:SqlDataSource> 

</form> 

的代码工作正常,如果我硬编码的ID,所以这是如何工作?

+0

尝试的SelectCommand = “SELECT * FROM书WHERE ID = <%= MyIdVal%>” – Jodrell

+0

它给了我这个错误转换为varchar值 '<%=MyIdVal %>' int数据类型时,现在转换失败。 –

回答

3

这里有两种方法来做到这一点。

  1. 绑定参数值到控制

    <selectparameters> 
        <asp:controlparameter 
          name="MyIdVal" 
          controlid="DropDownListBooks" 
          propertyname="SelectedValue"/> 
    </selectparameters> 
    

2。使用SqlDataSource.Selecting Event

protected void myIdDataSource_Selecting 
    (object sender, ObjectDataSourceSelectingEventArgs e) 
{ 
    e.InputParameters["MyIdVale"] = MyIdVal; 
}