Как привязать результат DataTable.Select() к элементу управления ListBox?

StackOverflow https://stackoverflow.com/questions/114851

Вопрос

У меня есть следующий код:

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

А DataTable.Select() метод возвращает массив System.Data.DataRow объекты.

Независимо от того, что я указываю в ListBox.DisplayMember все, что я вижу, это ListBox с правильным количеством элементов, которые отображаются как System.Data.DataRow вместо значения, которое я хочу, которое находится в "name" столбец!

Можно ли привязаться к полученному массиву из DataTable.Select(), вместо того, чтобы перебирать его и добавлять каждый из них в ListBox?

(У меня нет проблем с зацикливанием, но финал не кажется элегантным!)

Это было полезно?

Решение

Использовать Просмотр данных вместо.

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

Другие советы

У Джоша все правильно с DataView.Если вам нужен очень большой молоток, вы можете взять массив строк из любого DataTable.Select("...") и выполнить слияние с другим DataSet.


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

Такой подход к тому, что вы пытаетесь сделать, скорее всего, является излишним, но бывают случаи, когда вам может потребоваться получить таблицу данных из массива строк, где это полезно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top