Comment lier le résultat de DataTable.Select () à un contrôle ListBox?
-
02-07-2019 - |
Question
J'ai le code suivant:
ListBox.DataSource = DataSet.Tables("table_name").Select("some_criteria = match")
ListBox.DisplayMember = "name"
Le DataTable La méthode .Select ()
renvoie un tableau de objets System.Data.DataRow
.
Quoi que je spécifie dans la propriété ListBox.DisplayMember
, tout ce que je vois est le ListBox avec le nombre correct d'éléments, tous affichés sous la forme System.Data.DataRow
. de la valeur que je veux qui se trouve dans la colonne "quotient"
!
Est-il possible de lier le tableau résultant à partir de DataTable.Select ()
, au lieu de le parcourir en boucle et d'ajouter chaque élément au ListBox
?
(Je n'ai aucun problème avec la mise en boucle, mais cela ne semble pas être une fin élégante!)
La solution
Utilisez plutôt un DataView .
ListBox.DataSource = new DataView(DataSet.Tables("table_name"), "some_criteria = match", "name", DataViewRowState.CurrentRows);
ListBox.DisplayMember = "name"
Autres conseils
Josh a raison avec le DataView. Si vous avez besoin d'un très gros marteau, vous pouvez extraire le tableau de lignes de n'importe quel DataTable. Sélectionnez ("...") et effectuez une fusion dans un autre ensemble de données.
DataSet copy = new DataSet();
copy.Merge(myDataTable.Select("Foo='Bar'"));
// copy.Tables[0] has a clone
Cette approche de ce que vous essayez de faire est très probablement exagérée, mais il peut arriver que vous deviez obtenir une datable dans un tableau de rangées où cela vous serait utile.