私は次のフォームを持っています:
- 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