8 Stimmen

Entfernen Sie eine asp.net-Steuerung aus dem Code-Behind

Ich muss eine Steuerung (eine Textbox) von meiner Seite entfernen, wenn eine bestimmte Bedingung erfüllt ist. Ist es möglich, dies vom Code-Behind aus zu tun oder muss ich JavaScript verwenden.

HINWEIS Ich muss die Steuerung entfernen, nicht ausblenden...

13voto

Tim Schmelter Punkte 427304

Verwenden Sie Controls.Remove oder Controls.RemoveAt auf der Eltern-ControlCollection.

Zum Beispiel, wenn Sie alle TextBoxes oben auf der Seite entfernen möchten:

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

(beachten Sie, dass Sie <code>using System.Linq</code> für <code>Enumerable.OfType</code> hinzufügen müssen)

Oder wenn Sie eine TextBox mit einer bestimmten ID entfernen möchten:

TextBox textBox1 = (TextBox)Page.FindControl("TextBox1"); // beachten Sie, dass dies nicht funktioniert, wenn Sie MasterPages verwenden
if(textBox1 != null)
    Page.Controls.Remove(textBox1);

Wenn Sie es nur ausblenden möchten (und es vollständig von der Clientseite entfernen möchten), können Sie es auch unsichtbar machen:

textBox1.Visible = false;

3voto

jrummell Punkte 41902

Während Sie es aus der Steuerelementsammlung entfernen könnten, warum verstecken Sie es stattdessen nicht?

yourTextBox.Visible = false;

Dadurch wird verhindert, dass es im generierten HTML, das an den Browser gesendet wird, enthalten ist.

2voto

Ramesh Punkte 12657

Wenn Sie .Visible=false setzen, wird es nie auf der Seite gerendert. Wenn Sie die Steuerung aus der Steuerungs-Sammlung entfernen, tun Sie dies nicht während der DataBind, Init, Load, PreRender oder Unload Phasen, da es eine Ausnahme auslöst.

Das Hinzufügen oder Entfernen der Steuerung dynamisch kann Probleme verursachen.

1voto

Justin Harvey Punkte 14336

Ja, du kannst es einfach aus der Controles-Sammlung der Seite entfernen:

this.Controls.Remove(control);

0voto

Aghilas Yakoub Punkte 27861

Sie können es mit diesem Code versuchen - basierend auf der Remove Methode

this.Controls.Remove(IhrSteuerElement);

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X