0

コントロール名を知って、それらを発生させたり、プロセスのイベント/コードビハインドを呼び出したりする方法を探しています。VS2010でVB .NETを使用しています

パネルにチェックボックスを選択したaspxページがあり、各チェックボックスには独自のトリガーがあります。チェックされたチェックボックスのリストを保存するコードがあります。これらのチェックボックスにチェック済みの状態を復元するコードがありますが、関連するコードをチェックボックスの checkchanged イベントに実行する必要があります。

' Read db to get saved list of checkboxes '
For each result from db
    Dim cb As CheckBox
    cb = 'a function that finds and returns the control'
    ' Now that I have the control, 
    ' how can I find and execute it's checkedchanged code?

テストでは、cb.checked = true を処理でき、cb がチェックされるため、コントロール リターン関数が機能していますが、これはイベントを発生させず、コードをトリガーしません。

関連する checkchanged サブルーチンの例:

Protected Sub cb_use_rc3_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cb_use_rc3.CheckedChanged
Protected Sub cb_use_casestatus_CheckedChanged(sender As Object, e As EventArgs) Handles cb_use_casestatus.CheckedChanged

何か案は?

4

2 に答える 2

3
For Each grd_Row As GridViewRow In gvPersonalInventario.Rows
  Dim cb As New Web.UI.WebControls.CheckBox
  cb = grd_Row.FindControl("CheckBox2")
  If cb.Checked = True Then
    label1.text = grd_Row.Cells(0).Text
  End If
Next
于 2012-10-22T18:53:51.610 に答える
0

OK、チェックボックスにはそれぞれ個別の ID があり、いかなる種類のバインドされたコントロールによっても生成されないという前提で作業しています。

どのハンドラーがどのオブジェクトのどのイベントに接続されているかを判断することは可能ですが (または私は理解しています)、この限られたケースでは価値があるよりもおそらく面倒です。

最も醜いですが、これを行う最も簡単な方法は次のとおりです。

  1. Schmelter 氏のアドバイスに従い、意味のある名前のメソッドでビジネス ロジックを分離します。すべてのロジックをイベント ハンドラーに配置するのではなく、各イベント ハンドラーから呼び出します。
  2. コントロールを持っているので、その ID を決定できます。コントロールの ID を持つステートメントを使用してSelect Case、#1 のどのメソッドを呼び出すかを決定します。
于 2012-09-21T17:24:27.610 に答える