C# 在asp.net中动态生成文本框的步骤

C# 在asp.net中动态生成文本框的步骤,c#,asp.net,dynamically-generated,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.

我想在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 ++;
}
private void CreateTextBox(字符串ID)
{
TextBox txt=新的TextBox();
txt.ID=ID;
txt.Width=单位像素(150);
txt.AutoPostBack=false;
TextBox txt2=新的TextBox();
txt2.ID=ID+“s”;
txt2.宽度=单位像素(100);
txt2.AutoPostBack=false;
Panel1.Controls.Add(txt);
面板1.控制。添加(新的文字控制(“ ”);
面板1.控件。添加(txt2);
Panel1.Controls.Add(新的LiteralControl(“
”); } 受保护的无效按钮2\u单击(对象发送者,事件参数e) { CreateTextBox(“txtTag-”+index.ToString()); 索引++; }
索引是全局静态int变量


问题是什么?

您需要了解asp.net的页面生命周期。 Http是一种无状态协议,服务器不记得以前请求的任何内容

您不知道如何使用
会话
,然后跟踪
会话
变量中的索引

使用此代码吗

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

虽然(index您只能在页面的初始化阶段实际添加控件,请参见您可以使用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();
} 

我知道会话,但如何使用它?请给我一个例子?我应该在会话或文本框中添加面板?谢谢。这是工作,但TextChanged和ControlRenderer是什么?TextChanged是文本框提供的一个事件,如果用户更改了文本框中的任何文本,您希望执行一些代码,那么您可以将其放入me中thod
textName\u TextChanged
如果不想处理此事件,只需删除该方法和行
textName.TextChanged+=neweventhandler(textName\u TextChanged);