2012-10-09 15 views
7

Muszę usunąć formant (pole tekstowe) z mojej strony po sprawdzeniu określonego warunku. Czy można to zrobić z poziomu kodu lub potrzebuję JavaScript.Usunięcie formantu asp.net z kodu źródłowego

UWAGA muszę usunąć kontrolę, nie do ukrycia ...

+1

Po prostu usuń go za pomocą identyfikatora z kolekcji Kontrolki stron. – IrishChieftain

+0

Kiedy jest sprawdzany stan pacjenta? Czy jest to przed/podczas renderowania strony? Jeśli nie, rzeczywiście potrzebujesz javascript/DOM, aby to zrobić bez przeładowywania strony. –

+0

@JHudler warunek jest oceniany podczas page_load – davioooh

Odpowiedz

10

Korzystając Controls.Remove lub Controls.RemoveAt na rodzica ControlCollection.

Na przykład, jeśli chcesz usunąć wszystkie tekstowych ze strony w górę:

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

(zauważ, że trzeba dodać using System.Linq dla Enumerable.OfType)

lub jeśli chcesz usunąć TextBox o podanym ID:

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

Jeśli chcesz go ukryć (i usunąć z poziomu cl ientside całkowicie), możesz również uczynić go niewidocznym:

textBox1.Visible = false; 
0

Tak, można po prostu usunąć je z kolekcji Controles strony:

this.Controls.Remove(control); 
2

Chociaż można usunąć to z kolekcji kontrolek, dlaczego nie ukryć tego?

yourTextBox.Visible = false; 

Zapobiegnie to włączeniu go do wygenerowanego html wysłanego do przeglądarki.

1

Po ustawieniu .Visible=false, nie zostanie on nigdy wyrenderowany na stronie. Jeśli usuniesz kontrolkę z kolekcji Controls, nie rób tego podczas faz, ponieważ spowoduje to wyrzucenie wyjątku.

Dynamiczne dodawanie lub usuwanie kontrolek może powodować problemy.

Powiązane problemy