2010-04-30 3 views
0

J'ai une table qui utilise la même liste déroulante dans chaque ligne. J'ai pensé que je pourrais juste créer une liste déroulante et la réutiliser ensuite dans chaque nouvelle rangée, mais la table finit avec une rangée seulement à moins que je crée la "nouvelle" liste déroulante. Est-ce que je m'approche de tout cela?Comment réutiliser une liste déroulante chaque ligne d'une table au lieu de la reconstruire

Dans l'intérêt de l'efficacité, existe-t-il un moyen de construire la liste une fois et ensuite de la réutiliser en créant une autre instance de celle-ci ou quelque chose? J'essayais d'éviter de reconstruire cette liste plusieurs fois.

Merci

private void UserRoles() 
{ 
    Table table = MakeTable(); 
    Ewo.sqlDataStore.Administrator sql = new Ewo.sqlDataStore.Administrator(); 
    DataSet dataset =sql.SiteUserRoleList(); 
    DropDownList sel = RoleList(dataset.Tables[0]); 
    if(tools.validDataSet(dataset)) 
    { 
     if (dataset.Tables.Count > 1)//existing roles are #2, show the roles the user is part of 
     { 
      foreach (DataRow dRow in dataset.Tables[1].Rows) 
      { 
       table.Rows.Add(CreateRoleRow(Convert.ToString(dRow["SitePageGroupName"]), sel));//add a row with data 
      } 
     } 
     table.Rows.Add(CreateRoleRow(sel));//add a blank row on the bottom 
    } 
    AdminSiteUerRoles.Controls.Add(table);//add it all to the page 
} 

Répondre

0

Pourriez-vous peut-être convertir votre table en un asp:GridView?

Sinon, vous pourriez peut-être charger vos DropDownLists via un SqlDataSource ou un ObjectDataSource.

Créez un new DropDownList() et ajoutez-le à la colonne de votre tableau si nécessaire.

Spécifiez le DataSourceID pour chaque nouvelle liste déroulante DropDownList comme source de données.

+0

Merci pour la suggestion gridview mais je fais trop d'autres choses funky rendre cela faisable. – Praesagus

0

Vous devez créer une nouvelle instance DropDown pour chaque ligne.

Voici un exemple:

foreach (DataRow dRow in dataset.Tables[1].Rows){ 
DropDownList sel = RoleList(dataset.Tables[0]); 
    table.Rows.Add(CreateRoleRow(Convert.ToString(dRow["SitePageGroupName"]), sel)); 

}

Hope this helps ...

de

+0

Cela le fait fonctionner - merci. Dans l'intérêt de l'efficacité, existe-t-il un moyen de construire la liste une fois et de la réutiliser en créant une autre instance? J'essayais d'éviter de reconstruire cette liste plusieurs fois. RoleList (dataset.Tables [0]) va recréer la liste. – Praesagus

Questions connexes