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!)

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top