0

私はasp.netでWebアプリを書いています。ボタンを生成してボタンを返すクラス(テスト)を呼び出すaspxページがあります。クラスコンストラクターは、ボタンクリックイベントがアクティブ化する関数(userClickOnButton)を取得し、button.click + = EventHandler( "関数の名前(userClickOnButton)");に挿入します。

問題は、コードの背後にあるaspxでIsPostBackを使用し(離陸できない、この条件が必要)、ボタンをクリックすると、プログラムはボタン用に作成したイベントに移動しませんが、IsPostBackを離陸すると移動しますプログラムが作成したイベント(関数userClickOnButton)に移動することを条件とします。

私のコードは:aspxコードビハインド

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Test test = new Test(userClickOnButton);
        Button button = test.AddButton();
        cell.Controls.Add(button);
    }
}

private void userClickOnButton(object sender, EventArgs e)
{
    this.ModalPopupExtenderSelectFilds.Show();
}

私のクラス

public class Test
{

Action<object, EventArgs> m_ButtonClickActivateFunction;

public Test(Action<object, EventArgs> func) 
{
    m_ButtonClickActivateFunction = func;
}

public Button AddButton()
{
    Button button = new Button();
    button.Text = "select";
    button.ID = "buttonID";
    button.Click += new EventHandler(m_ButtonClickActivateFunction);

    return button;
}

IsPostBack条件を取得せずにイベントをアクティブ化するための支援が必要

ありがとう

4

1 に答える 1

1

asp.netは、存在しなくなったボタンのクリックを処理しないと思います。ポストバックではボタンを再作成しないため、ボタンはページのコントロールコレクションに存在しなくなるため、イベントは処理されません。

イベントの処理は後Page_Loadに行われるためPage_Load、ボタンを再作成する必要があります。

こちらもご覧ください:Asp.Netページのライフサイクル

于 2012-02-20T15:49:52.217 に答える