2010-12-13 36 views
0

J'ai une table dans SQL Server qui me donne une liste de produits (PRODUCT), et la catégorie de produits (CAT). En ce moment je suis en train de tous les produits dans la même zone de liste:créer dynamiquement plusieurs ListBoxes

 
foreach (DataRow row in ds.Tables["ProductsTbl"].Rows) 
{ 
    string str = string.Format("{0}", row["PRODUCT"]); 
    ListBox1.Items.Add(new ListItem(str)); 
} 

Mais je dois créer autant de listes déroulantes comme il y a des catégories, et de distribuer ces produits en fonction de la catégorie. Les catégories peuvent être ajoutées ou supprimées, j'ai donc besoin de les créer de manière dynamique.

Donc disons que la table a 5 produits dans la catégorie 1, 4 produits dans la catégorie 2 et 7 produits dans la catégorie 3, j'aurais besoin de 3 boîtes de liste créées. Le premier avec 5 articles, le second avec 4 et le dernier avec 7 articles. Des idées ? Thx.

Répondre

1
  1. Commander ProductsTbl DataSet par categoryId
  2. Ajouter une nouvelle zone de liste chaque fois que vous rencontrez une nouvelle categoryId

Quelque chose comme ceci:

var catId = ds.Tables["ProductsTbl"].Rows[0].categoryId; 
var listBox = ListBox1; 
foreach (DataRow row in ds.Tables["ProductsTbl"].Rows) 
{ 
    if(catId != row.categoryId) 
    { 
     catId = row.categoryId; 
     listBox = new ListBox(); 
     Panel1.Controls.Add(listBox); 
    } 
    string str = string.Format("{0}", row["PRODUCT"]); 
    listBox.Items.Add(new ListItem(str)); 
} 
+0

semble bon, mais serais-je capable de déclencher des événements sur les contrôles créés dynamiquement? Par exemple, pour chaque ListBox, j'aurai un bouton "select all" et "unselect all". – ncilep

+0

Oui - pour les événements serveur, consultez ce lien http://support.microsoft.com/kb/317794. Pour les événements client, vous pouvez utiliser une fonction live jquery. Il répondra aux éléments créés dynamiquement. Voir ce lien http://api.jquery.com/live/ –