0

我想在 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

4 回答 4

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();
} 
于 2013-05-28T08:08:15.320 回答
1

你需要学习 asp.net 的页面生命周期。Http 是一个无状态协议 服务器不记得任何关于之前请求的信息

Y 不要你学习使用Session然后跟踪Session变量中的索引

于 2013-05-28T08:00:01.927 回答
0

使用此代码

int index = 1;
while(index <=2)
{
   CreateTextBox("txtTag-" + index.ToString());
   index++;
}
于 2013-05-28T08:03:57.453 回答
0

您只能在页面的初始化阶段务实地添加控件,请参阅ASP.NET 页面生命周期概述

于 2013-05-28T08:04:15.817 回答