1

私は次のフォームを持っています:

  • 1 つのテキスト ボックス ("MyTextBox")
  • 3 つのチェック ボックス ("MyCheckBox1"、"MyCheckBox2"、"MyCheckBox3")
  • 1 つの送信ボタン ("MySubmitButton")
  • 1 ObjectDataSource (「MyObjectDataSource」)
  • 1 GridView ("MyGridView")

私の 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>

2 番目のパラメーター ("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" イベントは発生せず、以前と同じ結果が得られます。 .

これを回避する方法の 1 つは、MySubmitButton がクリックされるたびに MyGridView.DataBind メソッドを明示的に呼び出すことでした。これは、これらのタイプのパラメーターを処理するための最良の方法ですか? 私が恐れているのは、これにより select メソッドが 2 回呼び出され、ページが遅くなる可能性があることです。

助けてくれてありがとう。

CD

4

1 に答える 1

0

これが私がやったことです。

  1. すべてのasp:ControlParametersをasp:Parametersに置き換えました。
  2. MySubmitButtonがクリックされるたびに、明示的に呼び出されるMyGridView.DataBindメソッド。

チェックしたところ、これを行うときにselectメソッドが2回呼び出されません。

于 2012-05-16T23:47:05.703 に答える