0

.net でプログラミングを行っているほぼすべての人が、ボタンの動的な作成に関して同様の問題に遭遇したことがあると確信しています。

シナリオ例..

グリッドビューがあり、グリッドビュー フィールドの 1 つにボタンがあります。通常、Visual Studio を使用する .net では、ボタンのクリック イベントを簡単に取得できますが、これらのボタンは動的に作成されるため、簡単には取得できません。ボタンのクリックイベントを取得するための最良の方法は何かに興味がありました。

dopostback を使用して可能であることは理解しています。ただし、dopostback メソッドは使用するのにあまり適していないことも読んだので、それを実装する方法も試したこともありません。何故ですか?

4

3 に答える 3

4

gridview には、 RowDataboundというイベントがあります。その上にイベントハンドラーを配置します。

gv.RowDataBound += new EventHandler(rowBound);

その関数内で、FindControl を使用してボタンを見つけ、ハンドラーを追加します。

function rowbound(Object sender, GridViewRowEventArgs e)
{
  if(e.Row.RowType == DataControlRowType.DataRow)
  {
      var b = e.Row.FindControl("btn") as Button;
      b.Click += new EventHandler(handleBtnClick);
  }
}
于 2009-01-30T20:37:42.813 に答える
2

Gridview の ItemCreated イベント中に、FindControl を使用してボタンへの参照を取得し、そこにイベント ハンドラーをアタッチします。すなわち。btn.Click += サムハンドラー;

于 2009-01-30T20:38:16.260 に答える
1

悲しいことに、答えは私が思っていたよりもはるかに簡単でした..

ItemCommand イベントが TemplateField で作成されたボタンに使用できることに気付きませんでした。

私が本当にしなければならなかったのは..

Private Sub GridView1_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewCommandEventArgs) Handles DetailsView1.ItemCommand
    If e.CommandName = "myButton" Then
        //'myButton press event logic here
    End If
End Sub

助けてくれてありがとう..本当に感謝しています。あなたの答えは将来役に立つと確信しています。

于 2009-02-04T15:50:26.463 に答える