2012-10-09 80 views
7

我需要在驗證某個條件時從我的頁面中刪除一個控件(一個文本框)。 是否有可能從代碼隱藏或我需要使用JavaScript。從代碼隱藏中刪除一個asp.net控件

注意我需要刪除的控制,不隱藏...

+1

只需通過Page控件集合中的ID刪除它即可。 – IrishChieftain

+0

您的條件何時驗證?是在頁面呈現之前/期間嗎?如果沒有,你確實需要javascript/DOM來實現這個功能,而不需要重新加載頁面。 –

+0

@ J.Hudler條件在page_load – davioooh

回答

10

使用Controls.RemoveControls.RemoveAtControlCollection

例如,如果你想從頁面的頂部刪除所有文本框:

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

(請注意,您需要添加using System.LinqEnumerable.OfType

,或者如果你想刪除帶給定ID的文本框:

TextBox textBox1 = (TextBox)Page.FindControl("TextBox1"); // note that this doesn't work when you use MasterPages 
if(textBox1 != null) 
    Page.Controls.Remove(textBox1); 

如果您只是想隱藏它(並將其從cl中刪除您也可以將其隱藏起來:

textBox1.Visible = false; 
0

是的,你可以從頁面的CONTROLES集合中刪除它:

this.Controls.Remove(control); 
2

雖然你可以刪除它來自控件集合,爲什麼不隱藏它呢?

yourTextBox.Visible = false; 

這將防止它被包含在生成的html中發送到瀏覽器。

1

當您設置.Visible=false時,它將永遠不會呈現在頁面中。如果您從Controls集合中刪除控件,請不要在DataBind,Init,Load,PreRenderUnload階段執行此操作,因爲它會引發異常。

動態添加或刪除控件可能會導致問題。