2

asp.netでWebアプリを作成していますが、aspxページの1つに静的テーブルがあります。

このテーブルに、コードビハインドから動的にテキストボックスコントロールを挿入します(Page_Loadから、作成する必要があるかどうかがユーザーの回答に依存するかどうかわからないため、このコントロールを動的に作成します)。ユーザーがボタンをクリックした後にテキストボックスのテキストを取得します。私は知っていることをすべて試しましたRequest.Form.Get("id of the control")Page.FindControl("id of the control")、何も機能しません。テキストボックスからテキストを取得する機能をアクティブにするボタンをクリアするために、常にnullを取得します。挿入動的に。

ボタンとテキストボックスの両方がテーブルに「座っている」ので、そのままにしておく必要があります。助けていただければ幸いです。

私のコードは次のとおりです:aspxページ

<asp:Table ID="TabelMessages" runat="server"></asp:Table>

aspx.csコードの背後にあるコード:

protected void Page_Load(object sender, EventArgs e)
{
    TextBox tb = new TextBox();
    tb.ID = "textBox";
    tb.Text = "hello world";
    TableCell tc = new TableCell();
    tc.Controls.Add(tb);
    TableRow tr = new TableRow();
    tr.Cells.Add(tc);
    TabelMessages.Rows.Add(tr);
}

public void Button_Click(object o, EventArgs e)
{
  string a = Request.Form.Get("textBox");//does not work
  Control aa = Page.FindControl("textBox");//does not work
}
4

4 に答える 4

2

または、最終的に何をしたいかによっては、Page_Load を使用します。

あなたのページクラスで:

protected TextBox _tb; //this is what makes it work...

protected void Page_Load(object sender, EventArgs e)
{

    _tb = new TextBox();
    _tb.ID = "textBox";
    TableCell tc = new TableCell();
    tc.Controls.Add(_tb);
    TableRow tr = new TableRow();
    tr.Cells.Add(tc);
    TabelMessages.Rows.Add(tr);

    if (!Page.IsPostBack)
    {
        _tb.Text = "hello world";
    }

}

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = _tb.Text; //this will display the text in the TextBox    
}
于 2012-04-09T00:21:02.953 に答える
2

あなたの

public void Button_Click(object o, EventArgs e)
{
  //try searching in the TableMessage.Controls()
}
于 2012-04-08T22:51:06.307 に答える
1

Page_PreInitメソッド内でコードを実行する必要があります。これは、動的に作成されたコントロールを適切に機能させるために追加/再追加する必要がある場所です。

ASP.NET ページ ライフ サイクルに関する MSDN の記事で、これらのタイプの問題の詳細を参照してください。

于 2012-04-08T22:34:43.847 に答える
1

Page_Loadコードを次のように変更してみてください。

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);

    TextBox tb = new TextBox();
    tb.ID = "textBox";
    tb.Text = "hello world";
    TableCell tc = new TableCell();
    tc.Controls.Add(tb);
    TableRow tr = new TableRow();
    tr.Cells.Add(tc);
    TabelMessages.Rows.Add(tr);
}
于 2012-04-08T22:47:10.237 に答える