2

我正在 asp.net 中编写一个 Web 应用程序,在我的一个 aspx 页面中,我有一个静态表。

在这个表中,我从后面的代码中插入了一个动态文本框控件(从 Page_Load,我动态创建了这个控件,因为我不知道是否需要创建它取决于用户的回答),问题是当我尝试用户单击按钮后获取文本框文本,我尝试了从Request.Form.Get("id of the control")to知道的所有内容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

在你的

public void Button_Click(object o, EventArgs e)
{
  //try searching in the TableMessage.Controls()
}
于 2012-04-08T22:51:06.307 回答
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 回答
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 回答