2010-03-08 234 views
1

數據源改寫ControlParameters我有一個ObjectDataSource(但也許這個問題是各種數據源的支持參數的集合相同):代碼隱藏

<asp:ObjectDataSource ID="MyObjectDataSource" runat="server" 
    TypeName="MyData" 
    OldValuesParameterFormatString="original_{0}" 
    SelectMethod="GetMyData" > 
    <SelectParameters> 
     <asp:ControlParameter ControlID="MyTextBox" Name="MyParameter" Type="String" /> 
    </SelectParameters> 
</asp:ObjectDataSource> 

正如你可以看到有一個ControlParameter綁定到aspx頁面上的TextBox。所以這個TextBox的內容是我的SelectMethod的一個參數。但是頁面上有一個特殊的按鈕:單擊此按鈕併發生回發時,我不希望DataSource抽取TextBox的內容來控制選擇,而是要設置特定的硬值「x」作爲選擇參數。

我該怎麼做?我可以以某種方式「禁用」ControlParameter當這個特定的按鈕被點擊並設置我的特殊值嗎?或者還有其他方法嗎?

感謝您提前反饋!

回答

1

我發現這個解決方案自己:

我已經更換了asp:ControlParameter由「通用」參數:

<SelectParameters> 
    <asp:Parameter Name="MyParameter" Type="String" /> 
</SelectParameters> 

...然後於特殊按鈕的事件處理程序:

MyObjectDataSource.SelectParameters["MyParameter"].DefaultValue = "x"; 

在按鈕的事件處理程序,其中應運行由文本框內容的選擇:

MyObjectDataSource.SelectParameters["MyParameter"].DefaultValue = MyTextBox.Text; 

我不知道這是一個很好的解決方案,還是它可能有不希望的副作用。但目前它的工作。 (我總是想知道「通用」參數的用途是什麼,或許正是這樣:「Unbound」參數只能通過代碼隱藏(除了作爲自定義參數類的基類)來設置)。