Frage

Ich habe den folgenden Code:

ListBox.DataSource = DataSet.Tables("table_name").Select("some_criteria = match")
ListBox.DisplayMember = "name"

Die DataTable.Select() Methode gibt einen Array von System.Data.DataRow Objekte.

Egal, was ich in der ListBox.DisplayMember Eigenschaft angeben, alles, was ich sehe, ist die List-Box mit der richtigen Anzahl von Elementen alle anstelle des Wertes als System.Data.DataRow zeigt Ich möchte die in der "name" Spalte ist!

Ist es möglich, die resultierende Anordnung von DataTable.Select() zu binden, anstatt durch sie von looping und dem Hinzufügen jedes zum ListBox?

(Ich habe kein Problem mit Looping, aber nicht über ein elegantes Ende scheinen!)

War es hilfreich?

Lösung

Verwenden Sie einen Dataview statt.

ListBox.DataSource = new DataView(DataSet.Tables("table_name"), "some_criteria = match", "name", DataViewRowState.CurrentRows);
ListBox.DisplayMember = "name"

Andere Tipps

Josh hat es richtig mit der Dataview. Wenn Sie einen sehr großen Hammer benötigen, können Sie die Anordnung von Reihen von jedem DataTable.Select nehmen ( „...“) und eine Zusammenführung in einen anderen Datensatz tun.


 DataSet copy = new DataSet();
 copy.Merge(myDataTable.Select("Foo='Bar'"));
 // copy.Tables[0] has a clone

Dieser Ansatz für das, was Sie zu tun versuchen ist wahrscheinlich übertrieben, aber es gibt Fälle, in denen Sie eine Datentabelle aus einer Reihe von Zeilen erhalten müssen, wo es nützlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top