在asp.net中动态生成文本框

时间:2013-05-28 07:51:27

标签: c# asp.net dynamically-generated

我想在asp.net和c#中动态生成文本框。 此代码只能运行一次,但我希望任何时候点击按钮,添加两个文本框。

private void CreateTextBox(string ID)
{
    TextBox txt = new TextBox();
    txt.ID = ID;
    txt.Width = Unit.Pixel(150);
    txt.AutoPostBack = false;
    TextBox txt2 = new TextBox();
    txt2.ID = ID + "s";
    txt2.Width = Unit.Pixel(100);
    txt2.AutoPostBack = false;
    Panel1.Controls.Add(txt);
    Panel1.Controls.Add(new LiteralControl("&nbsp&nbsp"));
    Panel1.Controls.Add(txt2);
    Panel1.Controls.Add(new LiteralControl("<br>"));

}


  protected void Button2_Click(object sender, EventArgs e)
{

        CreateTextBox("txtTag-" + index.ToString());
        index ++;
}

index是全局静态int变量。

有什么问题?

4 个答案:

答案 0 :(得分:1)

你需要学习asp.net的Page Life Cycle。 Http是无状态协议服务器不记得有关先前请求的任何内容

你不知道如何使用Session,然后跟踪Session变量中的索引

答案 1 :(得分:1)

您可以使用ControlRenderer代替此,例如:

    protected void btn_Click(object sender, EventArgs e)
{
    TextBox textName;
    textName = new TextBox();
    textName.TextChanged += new EventHandler(textName_TextChanged);

    string divContect = ControlRenderer(divTextBox);
    divTextBox.InnerHtml = divContect + ControlRenderer(textName);
}

protected void textName_TextChanged(object sender, EventArgs e)
{

}

public string ControlRenderer(Control control)
{
    StringWriter writer = new StringWriter();
    control.RenderControl(new HtmlTextWriter(writer));
    return writer.ToString();
} 

答案 2 :(得分:0)

使用此代码

int index = 1;
while(index <=2)
{
   CreateTextBox("txtTag-" + index.ToString());
   index++;
}

答案 3 :(得分:0)

您只能在页面初始化阶段以实际方式添加控件,请参阅ASP.NET Page Life Cycle Overview