2017-07-27 1 views
1

J'ai une liste ListBound avec Multiselect activée. Sur chargement de la page, je nourrirai les informations d'une colonne GridView et sélectionnez toutes les options qui correspondent, en utilisant ce code:Sélection de plusieurs éléments ListBox à partir de la colonne GridView

string[] separators = { "<br />" }; 

String Departments = Session["ProjDept"].ToString(); 
string[] splitDepartments = Departments.Split(separators, StringSplitOptions.RemoveEmptyEntries); 
foreach (var dept in splitDepartments) 
     { 
      listDepartment.SelectedIndex = listDepartment.Items.IndexOf(listDepartment.Items.FindByText(dept)); 
     } 

Cependant, je suis en cours d'exécution dans une question étrange: quand il n'y a qu'un seul service dans le GridView colonne, l'option dans la liste est correctement sélectionnée, mais lorsqu'il y a plusieurs départements, seul le département DERNIER est sélectionné.

J'ai exécuté System.Diagnostics.Debug.Print (dept) dans mon foreach pour m'assurer que toutes les valeurs sont passées et qu'elles apparaissent toutes dans le STDOUT, mais la listbox ne coopérera toujours pas.

Des idées sur la façon dont je peux résoudre ce problème - ou alternativement, quel autre code pourrais-je utiliser pour obtenir les mêmes résultats?

Merci!

Répondre

0

La propriété SelectedIndex n'autorise qu'une seule valeur à la fois, vous devez donc la réinitialiser à chaque itération. C'est pourquoi seul le dernier est sélectionné. Vous devez accéder à la propriété "Selected" à partir du ListItem lui-même.

Sans chercher moi-même, il devrait ressembler à:

foreach (var dept in splitDepartments) 
{ 
    int index = listDepartment.Items.IndexOf(listDepartment.Items.FindByText(dept));   
    listDepartment.Items[index].Selected = true; 
} 

Tant que vous ne l'avez SelectionMode = "Multiple" - que le code devrait fonctionner.

+0

Oui, vous l'avez! Je pensais que c'était quelque chose comme ça mais je ne pouvais pas indiquer le point exact de l'échec ... Merci! –