0

ASP.NET C#.

UpdatePanel 内には、OnTextChanged="text_changed" メソッドと Panel を持つ TextBox があります。

数字 3 がテキストボックスに入力された場合、以下の 3 つのテキストボックスが異なる ID でパネル内に表示されます。

ただし、updatepanel の外側のボタンをクリックすると、動的に作成されたテキストボックスが見つからないというエラーが発生しました。

動的に作成されたテキストボックスの値を取得するには?

テキストボックスの作成:

protected void text_changed(Object sender, EventArgs e)
        {
           int n = Int32.Parse(TextBox6.Text);
           Table table = new Table();

           for (int i = 0; i < n; i++)
            { 
                TableRow trow = new TableRow();             
                table.Rows.Add(trow);

                TableCell tcell = new TableCell();
                tcell.Text = (i + 1).ToString();   
                TextBox tb = new TextBox();
                tb.ID = "TB" + i.ToString();
                tcell.Controls.Add(tb);
                trow.Cells.Add(tcell);
            }
            Panel1.Controls.Add(table);

ButtonClick //作成されたテキストボックスから値を取得: int n = Int32.Parse(TextBox6.Text);

        for (int i = 0; i < n; i++) 
        {
            string title = ((TextBox)UpdatePanel1.FindControl("Panel1").FindControl("TB" + i.ToString())).Text;   //here null pointer exception..            
        }
4

1 に答える 1

1

テキストボックスをどこで生成していますか? それらを text_changed イベントで作成している場合、次の投稿でページのライフ サイクルの問題が発生します。それらを作成したという事実をキャッシュし、ページの OnInit フェーズでそれらを再作成する必要があります。

于 2013-05-28T09:30:14.950 に答える