我有一个ObjectDataSource(但是对于支持参数集合的所有类型的DataSource,这个问题可能都是一样的):
<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>
正如您所看到的,在aspx页面上有一个ControlParameter绑定到TextBox。因此,此TextBox的内容是我的SelectMethod的参数。但页面上有一个特殊按钮:当单击此按钮并发生回发时,我不希望DataSource提取TextBox的内容来控制选择,而是我想设置特定的硬值“x”作为选择参数。
我该怎么做?当单击此特定按钮并设置我的特殊值时,我可以以某种方式“禁用”ControlParameter吗?或者还有其他方法吗?
提前感谢您的反馈!
答案 0 :(得分:1)
我自己找到了这个解决方案:
我已将asp:ControlParameter
替换为“通用”参数:
<SelectParameters>
<asp:Parameter Name="MyParameter" Type="String" />
</SelectParameters>
...然后在特殊按钮的事件处理程序中:
MyObjectDataSource.SelectParameters["MyParameter"].DefaultValue = "x";
在按钮的事件处理程序中,它将运行TextBox内容的选择:
MyObjectDataSource.SelectParameters["MyParameter"].DefaultValue = MyTextBox.Text;
我不知道这是否是一个好的解决方案,或者它是否会产生不希望的副作用。但目前它的工作原理。 (无论如何,我想知道“泛型”参数的用途是什么。也许正是这样:“仅从代码隐藏设置的”未绑定“参数(除了作为自定义参数类的基类)。