Wie binde ich das Ergebnis DataTable.Select () zu einem Steuerelement List-Box?
-
02-07-2019 - |
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!)
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.