2010-11-29 14 views
0

Ich möchte zu meinem aspx-Webformular Steuerelemente zur Laufzeit mit C# hinzufügen.
Ich möchte eine generische Funktion schreiben, die jede Art von Steuerelement erstellen wird (zB: Textfeld, Label, Schaltfläche usw.).Generische Funktion zum Erstellen von Steuerelementen zur Laufzeit

Irgendwelche Ideen bitte. Dank BB

+0

Sie meinen "Runtime" im Browser (clientseitig) oder "Runtime" wie auf dem Server dynamisch, so dass der Client nur die Updates auf Seitenaktualisierungen und Postbacks sehen kann? – cwap

Antwort

2

Sie können dies tun, solange die Steuerarten, die Sie wollen, dass alle über einen Standardkonstruktor verfügen verwenden.

T AddControl<T>() where T : WebControl, new() 
{ 
    T ctrl = new T(); 
    ... 
    return ctrl; 
} 
+0

David, Danke. Ich möchte überprüfen, ob das übergebene Steuerelement ein Textfeld ist und einige Eigenschaften festlegen. Unten habe ich den Code eingefügt, den ich geschrieben habe, aber das ist nicht der richtige. Wo liege ich falsch? if (ctrl.Equals (System.Web.UI.WebControls.TextBox)) {... einige Eigenschaften festlegen} – BumbleBee

+0

Die Antwort gefunden. if (ctrl ist TextBox) {... setze einige Eigenschaften} – BumbleBee

+0

Wenn das übergebene Steuerelement Label ist und ich den Text des Labels festlegen möchte, wie kann ich das tun? – BumbleBee

3

Ich nehme an, Sie so etwas tun könnte:

public void CreateControl<W>(Func<W> controlConstructor) where W : WebControl 
{ 
     W control = controlConstructor(); 

     //add control and configure it, etc etc 
} 
+0

Möglicherweise auch eine einfache 'CreateControl () wo T: WebControl, new()' für die Steuerelemente, die einfache Konstruktoren haben. Außerdem könnten Sie wahrscheinlich eine Instanz von 'Control' übergeben, die das übergeordnete Objekt im Diagramm darstellt, in dem Sie Ihr neu erstelltes Steuerelement zu seiner' Controls'-Sammlung hinzufügen. –

2

hinzufügen Textfelder Steuerung

private void CreateTextBoxes() 
{ 

     for (int counter = 0; counter <= NumberOfControls; counter++) 
     { 
      TextBox tb = new TextBox(); 
      tb.Width = 150; 
      tb.Height = 18; 
      tb.TextMode = TextBoxMode.SingleLine; 
      tb.ID = "TextBoxID" + (counter + 1).ToString(); 
      // add some dummy data to textboxes 
      tb.Text = "Enter Title " + counter; 
      phTextBoxes.Controls.Add(tb); 
      phTextBoxes.Controls.Add(new LiteralControl("<br/>")); 

     } 

    } 

In CreateTextBoxes Methode, die ich Schleife durch ‚n‘ Anzahl der Kontrollen Platzhalter, die wir dynamisch in phTextBoxes Platzhalter erstellen möchte.

Verwandte Themen