当满足某个条件时,我需要从页面中删除一个控件(一个文本框)。这可以通过后端代码实现,还是需要使用JavaScript呢?
注意:我需要删除控件,而不是隐藏它...
使用父ControlCollection
上的Controls.Remove
或Controls.RemoveAt
。
例如,如果您想从页面的顶部删除所有文本框:
var allTextBoxes = Page.Controls.OfType<TextBox>().ToList();
foreach(TextBox txt in allTextBoxes)
Page.Controls.Remove(txt);
(请注意,您需要添加using System.Linq
以使用Enumerable.OfType
)
或者,如果您想删除具有给定ID的TextBox:
TextBox textBox1 = (TextBox)Page.FindControl("TextBox1"); // note that this doesn't work when you use MasterPages
if(textBox1 != null)
Page.Controls.Remove(textBox1);
textBox1.Visible = false;
尽管您可以将其从控件集合中移除,但为什么不隐藏它呢?
yourTextBox.Visible = false;
.Visible=false
时,它将不会在页面上呈现。如果你从Controls集合中删除控件,请勿在DataBind
、Init
、Load
、PreRender
或Unload
阶段执行此操作,否则会引发异常。是的,您可以从页面的控件集合中删除它:
this.Controls.Remove(control);
this.Controls.Remove(YourControl);
链接: http://msdn.microsoft.com/zh-cn/library/system.web.ui.controlcollection.remove(v=vs.80).aspx
TextBox1.Visible=false
意味着在客户端根本没有文本框。 - Tim Schmelter