我有一个表格:
- 1 个文本框(“MyTextBox”)
- 3 个复选框(“MyCheckBox1”、“MyCheckBox2”、“MyCheckBox3”)
- 1 个提交按钮(“MySubmitButton”)
- 1 对象数据源(“我的对象数据源”)
- 1个网格视图(“我的网格视图”)
我的 ObjectDataSource 看起来像这样:
<asp:ObjectDataSource ID="MyObjectDataSource" runat="server"
SelectMethod="MySelectMethod"
TypeName="MyTypeName">
<SelectParameters>
<asp:ControlParameter Name="MyRegularString"
Type="String"
ControlID="MyTextBox"
PropertyName="Text" />
<asp:Parameter Name="MySpecialString"
Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
第二个参数(“MySpecialString”)填充如下:
Protected Sub MyObjectDataSource_Selecting(...) Handles MyObjectDataSource.Selecting
Dim MySpecialString As String = "Key1=" & MyCheckBox1.Checked.ToString & ";" & _
"Key2=" & MyCheckBox2.Checked.ToString & ";" & _
"Key3=" & MyCheckBox3.Checked.ToString & ";"
e.InputParameters.Item("MySpecialString") = MySpecialString
End Sub
每当我更改 MyTextBox 的值并按下 MySubmitButton 时,都会调用 MyObjectDataSource 的 select 方法,并且一切正常。
但是,如果我更改任何复选框的值(不更改 MyTextBox 的值)并按下 MySubmitButton,则不会调用 select 方法,因此不会发生“MyObjectDataSource_Selecting”事件,我得到的结果与以前相同.
我发现解决此问题的一种方法是在单击 MySubmitButton 时显式调用 MyGridView.DataBind 方法。这是处理这些类型参数的最佳方法吗?我担心的是,这可能会导致 select 方法被调用两次,从而使页面变慢。
提前感谢您的帮助。
光盘