0

コントロールを動的に追加しますが、; easc ポストバック イベント コントロールがなくなりました。私は自分のコントロールを再び見ることができません。

では、どうすればコントロールを追加できますか?

4

4 に答える 4

1

ポストバックごとにコントロールを再作成する必要があるため、 この記事を参照してください

于 2010-01-11T14:32:10.133 に答える
0

コントロールがロードされた後は、IDプロパティでUserControlに常に一意のIDを割り当てる必要があります。また、ポストバック時に常にUserControlを再作成する必要があります。

posbackデータ(つまりTextBox)を保持するには、base.LoadViewStateを呼び出した後、ポストバックデータが処理される前に、オーバーライドされたLoadViewStateメソッドでUserControlをロードする必要があります。

于 2010-01-11T14:36:54.353 に答える
0

実行時にコントロールを追加し、ポストバックで保存します。

int NumberOfControls = 0;

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        ViewState["b1"] = 0;
    }
    else
    {
        if ((int)ViewState["b1"] > 0)
        {
            CreateBtn();

        }
    }
}


protected void btn1_Click(object sender, EventArgs e)
{
    NumberOfControls = (int)ViewState["b1"];

    Button b1 = new Button();
   // b1.Attributes.Add("onclick", "x()");
    b1.Text = "test2";

    b1.ID = "b1_" + ++NumberOfControls;
    b1.Click +=new  System.EventHandler(btn11);
    Panel1.Controls.Add(b1);
    ViewState["b1"] = NumberOfControls;
}

protected void CreateBtn()
{
    for (int i = 0; i < (int)ViewState["b1"];i++)
    {
        Button b1 = new Button();
        // b1.Attributes.Add("onclick", "x()");
        b1.Text = "test2";
        b1.ID = "b1_" + i;
        b1.Click += new System.EventHandler(btn11);
        Panel1.Controls.Add(b1);
    }
}

protected void btn11(object sender, System.EventArgs e)
{
    Response.Redirect("AboutUs.aspx");
}
于 2012-05-16T15:16:16.043 に答える
0

ページの Init イベントにコントロールを追加すると、ポストバック時にビューステートに保持されます。一意の ID を持っていることを確認してください。

このリンクを参照してください...

ASP.NET ポストバックでコントロールを追加

非常に些細な例..

public partial class MyPage : Page
{
    TextBox tb;

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        tb = new TextBox();
        tb.ID = "testtb";
        Page.Form.Controls.Add(tb);
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        //tb.Text will have whatever text the user entered upon postback
    }
}
于 2010-01-11T15:01:03.260 に答える