从代码隐藏中删除asp.net控件

时间:2012-10-09 14:43:51

标签: c# asp.net .net

我需要在验证某个条件时从我的页面中删除一个控件(文本框)。 是否有可能从代码隐藏或我需要使用JavaScript。

注意我需要删除控件,而不是隐藏...

5 个答案:

答案 0 :(得分:12)

在父ControlCollection上使用Controls.RemoveControls.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集合中删除控件,请不要在DataBindInitLoadPreRenderUnload阶段执行此操作,因为它会引发异常

动态添加或删除控件可能会导致问题。

答案 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