如何在SqlDataSource中指定存储过程的参数值

时间:2011-03-16 13:37:08

标签: asp.net stored-procedures parameters sqldatasource

对于使用SqlDataSource的声明性语法的新手,我试图想出一种方法来将参数的值设置为存储过程。我有一个通过Request Object传递的Client_ID,我需要在执行SqlDataSource的存储过程之前设置Client_ID。

我有几个问题。

  1. 存储过程参数是否必须在ASPX标记中预定义,还是可以在代码隐藏中动态添加?

  2. 有没有人会有一个示例来演示带有存储过程和参数的SqlDataSource标记,以及在代码隐藏中设置该参数值?

3 个答案:

答案 0 :(得分:9)

使用.net 4框架,你可以......

1.可以动态添加,但您必须提供自己的代码表达式构建器(更多信息see here) 1.1您也可以使用不同的参数来实现相同的目标,例如:

enter image description here

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中重新获取