1

我使用下面的代码动态创建了一些文本框,并在这个文本框中输入了一些文本。现在我想在将文本添加到数据库时读取此控件的 ID。如何在单击按钮时获取此 TextBox 的 ID。

for (int i = 0; i < dv_count; i++)
{
    TextBox txt_box = new TextBox();
    txt_box.Text = "";
    txt_box.ID = "s" + i;
    placeholder1.Controls.Add(txt_box);
}

protected void btn_act_proceed_Click(object sender, EventArgs e)
{
    int count = placeholder1.Controls.Count; //always return 0

    if (count > 0)
    {
        int dv_count = count / 2;

        for (int i = 0; i < dv_count; i++)
        {
            TextBox  lbl_type = (TextBox )placeholder1.FindControl("s" + i);
        }
    }
}
4

3 回答 3

2

尝试这个

在您的Aspx页面中

<div runat="server" id="plcholder">
</div>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

现在在后面的代码中

protected void Page_Load(object sender, EventArgs e)
{
    populate();
}

public void populate()
{
    for (int i = 0; i < 3; i++)
    {
        TextBox tb = new TextBox();
        tb.ID = "s" + i;
        tb.Text = "Hello" + i;
        plcholder.Controls.Add(tb);
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    int cont = plcholder.Controls.Count;

    for (int i = 0; i < cont-1; i++)
    {
        TextBox tx = (TextBox)plcholder.FindControl("s" + i);
        Response.Write(tx.Text);
    }
}
于 2013-04-18T06:47:33.400 回答
1

期间将失去控制postback。因此,preinit您需要再次创建控件。
或者,您可以将控件保持在会话中并从回发中取回。
一个很好的链接http://www.codeproject.com/Articles/3684/Retaining-State-for-Dynamically-Created-Controls-i
http://www.codeproject.com/Articles/502251/How-to-create-在 ASP-NET 中动态控制和

于 2013-04-18T06:36:34.127 回答
0

我没有看到您首先向占位符添加控件。尝试这个

for (int i = 0; i < dv_count; i++)
{
    TextBox txt_box = new TextBox();
    txt_box.Text = "";
    txt_box.ID = "s" + i;
    placeholder1.Controls.Add(txt_box);
}

TextBox lbl_type = (TextBox)placeholder1.FindControl("s" + i);
于 2013-04-18T06:29:59.100 回答