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