.Net: как я могу иметь комбинированный список с несколькими полями источника данных в качестве Displaymember? - PullRequest
1 голос
/ 16 мая 2010

Как я могу использовать комбинированный список с несколькими полями источника данных в качестве элемента отображения без добавления дополнительных столбцов к своему источнику данных?

Я имею в виду, что я хочу иметь комбинированный список с отображаемым элементом, например, "ID" + "-" "Имя". 1 - черный
2 - Белый
3 - красный

Я НЕ хочу добавлять дополнительный столбец к своему источнику данных.

Спасибо

Ответы [ 4 ]

1 голос
/ 16 мая 2010

Связывание с несколькими свойствами не поддерживается (в WinForms). Вы должны расширить свой DataTable с вычисляемым столбцом и привязать к этому новому столбцу.

dataTable.Columns.Add("IdAndName", typeof(String), "ID + Name");

comboBox.DataSource = dataTable;
comboBox.DisplayMember = "IdAndName";

См. MSDN для справки о допустимых выражениях для вычисляемых столбцов. Может быть, вы должны использовать Convert.

dataTable.Columns.Add("IdAndName", typeof(String), "Convert(ID, 'System.String') + Name");
0 голосов
/ 26 февраля 2012

Я только что нашел классное решение этой же проблемы, и я подумал, что бы поставить его здесь.
Если вы не установите DisplayMemeber, ComboBox вызовет метод ToString ваших исходных объектов. Так что все, что вам нужно сделать, это переопределить метод ToString и вуаля!

public override string ToString()
{
    return string.Format("{0} - {1}", ID, Name);
}

Надеюсь, это поможет!

0 голосов
/ 16 мая 2010

Варианты:
1) Измените ваш вызов данных, чтобы включить объединенный столбец, т. Е. Вы не будете «добавлять» столбец как таковой, вы будете выбирать два столбца, как указано в ho
2) Переключиться на ListView
3) Добавьте результаты вашего вызова данных в класс коллекции, в котором есть поля, которые вы хотите отобразить (ID, DisplayName), и добавьте свойство «IDDisplayNameCombined», которое объединяет их, и свяжите эту коллекцию с полем со списком и используйте новое комбинированное свойство как дисплейменю

0 голосов
/ 16 мая 2010

Используйте оператор выбора, чтобы получить данные, а не просто получить все из таблицы и написать что-то вроде:

SELECT ID, STR(ID) + ' - ' + Name DisplayName FROM table1

Затем установите ID в качестве элемента данных и DisplayName в качестве элемента отображения.

Не проверено, но такое чувство, что оно должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...