我通过单击 LinkButton 在页面中创建动态文本框。
但是,之后,如果提交页面,我找不到动态创建的项目,因此无法将信息发送到数据库。
protected void lbAddTag_Click(object sender, EventArgs e)
{
for (int i = 0; i < 3;i++ )
{
CreateTextBox("txtTag-" + i.ToString());
}
}
private void CreateTextBox(string ID)
{
TextBox txt = new TextBox();
txt.ID = ID;
txt.Width = Unit.Pixel(300);
//txt.TextChanged += new EventHandler(OnTextChanged);
txt.AutoPostBack = false;
tagsPanel.Controls.Add(txt);
Literal lt = new Literal();
lt.Text = "<br /><br />";
tagsPanel.Controls.Add(lt);
}
如果我输入:
foreach (Control c in tagsPanel.Controls)
{
if (c is TextBox)
{
lblError.Text += c.ClientID + " , ";
}
}
在 lbAddTag_Click 方法中,我可以看到这些项目,并且它们存在,但是如果我提交页面并尝试将值插入数据库中,则什么也没有...
任何提示都非常感激。
如果动态创建控件,它们不会在提交时保留到控件层次结构/视图状态中。
检查这篇文章:https://web.archive.org/web/20210330142645/http://www.4guysfromrolla.com/articles/092904-1.aspx https://web.archive.org/web/20210330142645/http://www.4guysfromrolla.com/articles/092904-1.aspx
我宁愿有一个中继器控件,然后在会话中维护一个 ArrayList 并将其用作中继器控件的数据源。当我想添加一行时,我宁愿在会话中向 ArrayList 添加一行并重新绑定转发器控件。
如果您需要示例,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)