1

我有一个表格:

  • 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 方法被调用两次,从而使页面变慢。

提前感谢您的帮助。

光盘

4

1 回答 1

0

这就是我最终做的。

  1. 将所有 asp:ControlParameters 替换为 asp:Parameters。
  2. 每当单击 MySubmitButton 时显式调用 MyGridView.DataBind 方法。

我检查并执行此操作时未调用两次 select 方法。

于 2012-05-16T23:47:05.703 回答