对于使用SqlDataSource的声明性语法的新手,我试图想出一种方法来将参数的值设置为存储过程。我有一个通过Request Object传递的Client_ID,我需要在执行SqlDataSource的存储过程之前设置Client_ID。
我有几个问题。
存储过程参数是否必须在ASPX标记中预定义,还是可以在代码隐藏中动态添加?
有没有人会有一个示例来演示带有存储过程和参数的SqlDataSource标记,以及在代码隐藏中设置该参数值?
答案 0 :(得分:9)
使用.net 4框架,你可以......
1.可以动态添加,但您必须提供自己的代码表达式构建器(更多信息see here) 1.1您也可以使用不同的参数来实现相同的目标,例如:
2
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:yourConnectionString %>"
SelectCommand="YourStoreProcedure" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter Name="yourParameterName" ControlID="controlThatHoldsParameterValue" PropertyName="Text" />
</SelectParameters>
答案 1 :(得分:3)
这是一个使用SqlDataSource参数化查询(存储过程和文本)的相当全面的示例,包括以编程方式设置参数。 ASP.NET - Using Parameterized Queries with the SqlDataSource。
答案 2 :(得分:0)
<asp:SqlDataSource ID="ADSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ADConnection %>"
SelectCommand="GetProfile" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="InputTextBox" Name="Host" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
GetProfile是存储过程名称,Host是参数名称,从名为InputTextBox的texbox中重新获取