gpt4 book ai didi

c# - Controls.remove() 方法在 asp.net 中不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:22 25 4
gpt4 key购买 nike

我有一个网络应用程序,用户可以在运行时创建动态文本框。当用户单击提交时,表单将数据发送到数据库,我想删除动态控件。

控件是在以下代码中创建的:

Table tb = new Table(); 
tb.ID = "tbl";

for (i = 0; i < myCount; i += 1)
{
TableRow tr = new TableRow();

TextBox txtEmplName = new TextBox();
TextBox txtEmplEmail = new TextBox();
TextBox txtEmplPhone = new TextBox();
TextBox txtEmplPosition = new TextBox();
TextBox txtEmplOfficeID = new TextBox();

txtEmplName.ID = "txtEmplName" + i.ToString();
txtEmplEmail.ID = "txtEmplEmail" + i.ToString();
txtEmplPhone.ID = "txtEmplPhone" + i.ToString();
txtEmplPosition.ID = "txtEmplPosition" + i.ToString();
txtEmplOfficeID.ID = "txtEmplOfficeID" + i.ToString();

tr.Cells.Add(tc);
tb.Rows.Add(tr);
}
Panel1.Controls.Add(tb);

代码的删除部分是:

Table t = (Table)Page.FindControl("Panel1").FindControl("tbl"); 
foreach (TableRow tr in t.Rows)
{
for (i = 1; i < myCount; i += 1)
{
string txtEmplName = "txtEmplName" + i;
tr.Controls.Remove(t.FindControl(txtEmplName));
string txtEmplEmail = "txtEmplEmail" + i;
tr.Controls.Remove(t.FindControl(txtEmplEmail));
string txtEmplPhone = "txtEmplPhone" + i;
tr.Controls.Remove(t.FindControl(txtEmplPhone));
string txtEmplPosition = "txtEmplPosition" + i;
tr.Controls.Remove(t.FindControl(txtEmplPosition));
string txtEmplOfficeID = "txtEmplOfficeID" + i;
tr.Controls.Remove(t.FindControl(txtEmplOfficeID));

}
}

但是,文本框仍然可见。

有什么想法吗?

最佳答案

我会假设您在每次加载页面时创建这些控件,否则当您的删除代码在回发时运行时它会失败,因为它们不存在。

因此,您需要通过确保将创建代码包装在 if (!IsPostBacK) { ... } 语句中来移动创建代码,使其不会在每次页面加载时都发生。

如果您这样做,那么您就不需要手动删除它们,因为它们是动态创建的,因此不会在每次回发时默认创建。

如果您可以发布调用创建控件的代码的位置以及删除代码,我可以为您提供更多帮助。

关于c# - Controls.remove() 方法在 asp.net 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com