我需要在验证某个条件时从我的页面中删除一个控件(文本框)。 是否有可能从代码隐藏或我需要使用JavaScript。
注意我需要删除控件,而不是隐藏...
答案 0 :(得分:12)
在父ControlCollection
上使用Controls.Remove
或Controls.RemoveAt
。
例如,如果要从页面顶部删除所有TextBox:
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;
答案 1 :(得分:2)
虽然您可以从控件集合中删除它,但为什么不隐藏它呢?
yourTextBox.Visible = false;
这将阻止它被包含在发送到浏览器的生成的html中。
答案 2 :(得分:1)
当您设置.Visible=false
时,它将永远不会在页面中呈现。如果从Controls集合中删除控件,请不要在DataBind
,Init
,Load
,PreRender
或Unload
阶段执行此操作,因为它会引发异常
动态添加或删除控件可能会导致问题。
答案 3 :(得分:0)
是的,你可以从页面的控件集合中删除它:
this.Controls.Remove(control);
答案 4 :(得分:0)
您可以尝试使用此代码 - 基于Remove method
this.Controls.Remove(YourControl);
链接:http://msdn.microsoft.com/en-US/library/system.web.ui.controlcollection.remove(v=vs.80).aspx