J'ai une liste déroulante à sélection multiple que je lie à un DataTable. DataTable contient 2 colonnes description et valeur.Définition de l'élément sélectionné dans une ListBox sans bouclage
est ici le code peuplant listbox:
DataTable copytable = null;
copytable = GlobalTable.Copy(); // GlobalTable is a DataTable
copytable.Rows[0][0] = "--ALL--";
copytable.Rows[0][1] = "--ALL--";
breakTypeList.DataSource = copytable;
this.breakTypeList.DisplayMember = copytable.Columns[0].ColumnName; // description
this.breakTypeList.ValueMember = copytable.Columns[1].ColumnName; // value
this.breakTypeList.SelectedIndex = -1;
Je suis en train de la description que DisplayMember et valeur que la ValueMember du ListBox. Maintenant, en fonction de ce que la valeur est passée, j'ai besoin de définir l'élément sélectionné dans le ListBox.
Voici mon code:
ListBox lb = c as ListBox;
lb.SelectedValue = valuePassedByUser;
qui ne fonctionne pas. Par conséquent, je dois recourir au code ci-dessous (où je boucle à travers tous les éléments de la liste)
for (int i = 0; i < lb.Items.Count; i++)
{
DataRowView dr = lb.Items[i] as DataRowView;
if (dr["value"].ToString() == valuePassedByUser)
{
lb.SelectedIndices.Add(i);
break;
}
}
Je voudrais savoir ce qui manque/erreur dans mon code. Pourquoi lb.SelectedValue = valuePassedByUser; sélectionner des éléments incorrects?
Pouvez-vous donner plus d'informations sur ce que vous devez faire exactement ou un exemple plus complet du code? L'objet est-il capable de lire un champ d'une base de données et de définir l'index/valeur sélectionné sur une valeur correspondante dans la liste? – ryanulit
La zone de liste est remplie avec un DataTable qui à son tour a récupéré des données de la base de données. Ma préoccupation est que si j'ai défini ValueMember en remplissant la liste, pourquoi lb.SelectedValue = valuePassedByUser; ne fonctionne pas? –