2011-03-16 44 views
5

作爲新使用的SqlDataSource的聲明語法,我試圖找出一種方法來一個參數的值設置爲一個存儲過程。我有一個通過請求對象傳遞一個CLIENT_ID,我需要執行的SqlDataSource的存儲過程之前設置CLIENT_ID。如何指定參數值的存儲過程中的SqlDataSource

我有幾個問題。

  1. 存儲過程參數是否必須在ASPX標記中預定義,還是可以在代碼隱藏中動態添加?

  2. 會有人有一個演示的SqlDataSource標記與所存儲的程序和參數的例子,以及設定在代碼隱藏參數值?

回答

9

在.NET 4框架,你可以...

1.It可以動態添加,但你必須提供自己的代碼表達式生成器(更多信息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> 

3

這是一個用SqlDataSource使用參數化查詢(存儲過程和文本)的相當徹底的例子,包括以編程方式設置參數。 ASP.NET - Using Parameterized Queries with the SqlDataSource

+1

雖然這種聯繫可以回答這個問題texbox retreived,最好是有答案的重要部分[這裏](http://meta.stackoverflow.com/a/8259),並提供鏈路參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – bummi

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是存儲過程的名稱和主機的參數名稱,它是由一個名爲InputTextBox

相關問題