3

asp.netで動的にボタンを作成しようとしていますが、イベントを追加できません。以下の何が問題になっているのでしょうか。

前もって感謝します

$

    Button btn2 = new Button();
    btn2.ID = "btnEdit";
    btn2.Text = "Edit Member";
    btn2.Click += new EventHandler(btnEdit_Click);
    form1.Controls.Add(btn2);

私もこのように試しました:

$

    Button btn2 = new Button();
    btn2.ID = "btnEdit";
    btn2.Text = "Edit Member";
    btn2.Attributes.Add("OnClick","btnEdit_Click);
    form1.Controls.Add(btn2);
4

5 に答える 5

0

私が正しければ、 でボタンを作成しますPage_Load

ポストバックを確認する場合。

if(!postback)
{
   create your buttons.
}
于 2012-07-09T11:56:16.977 に答える
0

以下のように、すべての動的コントロールを追加するためのメソッドを作成します

public void AddControls()
{
    Button btn2 = new Button();
    btn2.ID = "btnEdit";
    btn2.Text = "Edit Member";
    btn2.Click += new EventHandler(btnEdit_Click);
    form1.Controls.Add(btn2);
}

そして、以下のように Page_Load() イベント & IsPostBackブロックの外側でそのメソッドを呼び出します

protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)
    {

    }
    AddControls();
}

動的に追加されたコントロールのビューステートは、Page_Load()イベントの前にロードされないためです。詳細については、このリンクを参照してくださいhttp://msdn.microsoft.com/en-us/library/vstudio/hbdfdyh7(v=vs.100).aspx

于 2014-08-30T09:42:21.137 に答える
0

ここでサーバー側とクライアント側のイベントを混在させようとしていると思います。

html 属性OnClickはクライアント側です。ユーザーがボタンをクリックすると、JavaScript が起動されます。サーバー イベントOnClickは、ユーザーがボタンをクリックしてサーバーにポスト バックすると発生します。これにより、関数 (サーバー側) をフックすることができます。そのイベント。

サーバー側とクライアント側のどちらをお探しですか?

あなたができるクライアント側のイベントを追加するには

btn2.Attributes.Add("onclick","my_javascript_function");

サーバー側のイベントを追加するには、次のことができます

btn2.Click += new System.EventHandler(this.MyMethod); 

this.MyMethod は、サーバー側のボタン クリックを処理するためのメソッドです。

于 2012-07-09T10:53:36.350 に答える
0

asp.net Webフォームのライフサイクルに関する記事http://msdn.microsoft.com/en-us/library/ms178472.aspxを読んでください。ページをロードするたびにコントロールを作成/再作成する必要があります (例: OnLoad-Method)

http://www.asp.net/web-forms/videos/aspnet-ajax/how-to-dynamically-add-controls-to-a-web-page

于 2012-07-09T10:58:24.783 に答える