我想在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("  "));
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变量。
有什么问题?
答案 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