2010-11-29 5 views
0

Je souhaite ajouter des contrôles à mon formulaire Web aspx lors de l'exécution en utilisant C#.
Je voudrais écrire une fonction générique qui créera n'importe quel type de contrôle (par exemple: textbox, lable, bouton etc).Fonction générique pour créer des contrôles à l'exécution

Des idées s'il vous plaît. Merci BB

+0

Vous voulez dire "runtime" dans le navigateur (côté client) ou "runtime" comme dynamiquement sur le serveur, donc le client ne verra que les mises à jour sur les actualisations de page et les postbacks? – cwap

Répondre

2

Vous pouvez faire cela, tant que les types de contrôle que vous souhaitez utiliser tous un constructeur par défaut.

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

David, merci. Je veux vérifier si le contrôle transmis est une zone de texte et définir certaines propriétés. Ci-dessous j'ai collé le code que j'ai écrit mais ce n'est pas le bon. Où vais-je mal? if (ctrl.Equals (System.Web.UI.WebControls.TextBox)) {... définir des propriétés} – BumbleBee

+0

trouvé la réponse. if (ctrl is TextBox) {... définit des propriétés} – BumbleBee

+0

Si le contrôle transmis est Label et que je veux définir le texte de la liste comment puis-je faire cela? – BumbleBee

3

Je suppose que vous pourriez faire quelque chose comme ceci:

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

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

Peut-être aussi un simple 'CreateControl () où T: WebControl, new()' pour les contrôles qui ont des constructeurs simples. En outre, vous pourriez probablement passer dans une instance de 'Control' qui représente l'objet parent dans le graphique, dans lequel vous ajoutez votre contrôle nouvellement créé à sa collection' Controls'? –

2

Ajouter à TextBoxes contrôle PlaceHolder

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/>")); 

     } 

    } 

Dans la méthode CreateTextBoxes boucle I par nombre « n » de contrôles que nous veut créer dynamiquement dans l'espace réservé phTextBoxes.

Questions connexes