8

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

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

4

5 回答 5

12

在父级上使用Controls.Remove或。Controls.RemoveAtControlCollection

例如,如果要从页面顶部删除所有 TextBox:

var allTextBoxes = Page.Controls.OfType<TextBox>().ToList();
foreach(TextBox txt in allTextBoxes)
    Page.Controls.Remove(txt);

(请注意,您需要添加using System.Linqfor 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;
于 2012-10-09T14:49:04.267 回答
3

虽然您可以将其从控件集合中删除,但为什么不将其隐藏呢?

yourTextBox.Visible = false;

这将阻止它包含在发送到浏览器的生成的 html 中。

于 2012-10-09T14:46:54.007 回答
1

设置时.Visible=false,它永远不会在页面中呈现。如果从 Controls 集合中删除控件,请不要在DataBindInit、或阶段执行此操作Load,因为它会引发异常。PreRenderUnload

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

于 2012-10-09T14:46:54.523 回答
0

是的,您可以将其从页面的控件集合中删除:

this.Controls.Remove(control);
于 2012-10-09T14:45:46.397 回答
0

您可以尝试使用此代码 - 基于Remove method

this.Controls.Remove(YourControl);

链接: http: //msdn.microsoft.com/en-US/library/system.web.ui.controlcollection.remove (v=vs.80).aspx

于 2012-10-09T14:47:32.480 回答