2008-10-08 6 views
1

J'ai du code qui ajoute de nouvelles cellules à une table et les remplit de zones de texte.Création de contrôles dans une boucle

La façon dont je l'ai codé il fonctionne bien jusqu'à présent:

 TableCell tCell1 = new TableCell(); 
     TableCell tCell2 = new TableCell(); 
     TableCell tCell3 = new TableCell(); 
     TableCell tCell4 = new TableCell(); 
     TableCell tCell5 = new TableCell(); 
     TableCell tCell6 = new TableCell(); 
     TableCell tCell7 = new TableCell(); 

     TextBox txt1 = new TextBox(); 
     TextBox txt2 = new TextBox(); 
     TextBox txt3 = new TextBox(); 
     TextBox txt4 = new TextBox(); 
     TextBox txt5 = new TextBox(); 
     TextBox txt6 = new TextBox(); 
     TextBox txt7 = new TextBox(); 

     tCell1.Controls.Add(txt1); 
     tCell2.Controls.Add(txt2); 
     tCell3.Controls.Add(txt3); 
     tCell4.Controls.Add(txt4); 
     tCell5.Controls.Add(txt5); 
     tCell6.Controls.Add(txt6); 
     tCell7.Controls.Add(txt7); 

     tRow.Cells.Add(tCell1); 
     tRow.Cells.Add(tCell2); 
     tRow.Cells.Add(tCell3); 
     tRow.Cells.Add(tCell4); 
     tRow.Cells.Add(tCell5); 
     tRow.Cells.Add(tCell6); 
     tRow.Cells.Add(tCell7); 

Comme vous pouvez le voir, il y a essentiellement 4 instructions répétées obtenir 7 fois. Je suis sûr qu'il doit y avoir un moyen d'accomplir cela avec seulement 4 lignes de code dans une boucle FOR et d'avoir tous les noms attribués dynamiquement, mais je n'arrive tout simplement pas à trouver quelque chose qui me pointe dans la direction de fais le.

Quelque chose comme ce qui suit est ce que je suis après:

for (int i = 0; i < 6; i++) 
    { 

     TableCell tCell[i] = new TableCell(); 
     TextBox txt[i] = new TextBox(); 
     tCell[i].Controls.Add(txt[i]); 
     tRow.Cells.Add(tCell[i]); 

    } 

Toute aide serait grandement appréciée.

+0

Assurez-vous de changer i <6 en i <7 ou i <= 6 –

+0

Quel est le problème avec votre boucle suggérée? c'est la solution que j'aurais suggérée. Est-ce que ça ne fonctionne pas correctement? – WebDude

Répondre

2

Je pense que cela devrait le faire:

for (int i = 0; i < 7; i++) 
    { 

     TableCell tCell = new TableCell(); 
     TextBox txt = new TextBox(); 
     tCell.Controls.Add(txt); 
     tRow.Cells.Add(tCell); 

    } 

Assurez-vous que 6 est changé à 7.

0

Cela devrait fonctionner correctement?

for (int i = 0; i < 6; i++) 
{ 
    TableCell tCell = new TableCell(); 
    TextBox txt = new TextBox(); 
    tCell.Controls.Add(txt); 
    tRow.Cells.Add(tCell); 
} 

Je ne comprends pas vraiment ce dont vous avez besoin.
Avez-vous l'intention d'utiliser le nom "txt5" comme référence à cette zone de texte spécifique? Pourquoi ne pas simplement utiliser tRow.Cells[4].Controls[0] As TextBox?

0

Qu'est-ce que vous avez écrit semble effectivement assez près de moi. Il y a cependant quelques points à garder à l'esprit.

Je ne crois pas que vous ayez besoin de l'index de tableau. Tant que tRow est initialisé en dehors de la boucle, il ajoutera les nouveaux éléments à chaque fois. Vous pouvez également définir la propriété ID de chaque zone de texte afin de pouvoir accéder à tout élément spécifique que vous recherchez.

0

Merci pour toutes les réponses utiles. Pour ceux qui posaient des questions sur ce que je faisais avec les tableaux, ce n'était pas le cas! C'était juste un exemple de ce que j'essayais d'accomplir. Ian et Lars ont eu la bonne idée du fait que je devrais me référer à ces boîtes de texte plus tard, donc j'ai juste besoin d'utiliser la solution d'Eugène et Lubos et de m'assurer que j'ajoute une ligne qui leur donnera des identifiants séquentiels (txt1, txt2 etc) afin que je puisse le faire.

Merci encore pour toute la merveilleuse (et rapide!) Entrée, je suis maintenant amoureux de ce site!

Questions connexes