У меня очень тривиальное требование, которое сводит меня с ума. У меня есть DataGridView в приложении Windows Forms. Это содержит один столбец ComboBox с привязкой к данным. Я использую свойства DisplayMember и ValueMember этого списка.
Теперь мое требование состоит в том, чтобы ComboBox отображал список DisplayMembers в раскрывающемся списке, но когда пользователь выбирает из него один элемент, я должен отображать часть этого DisplayMember в ячейке комбинированного списка, видимой для пользователя. Например.
Мой список отображаемых элементов выглядит следующим образом:
"Cust1 - Клиент 1"
"Cust2 - Клиент 2"
"Cust3 - Клиент 3"
и когда пользователь выбирает любой из них из приведенного выше списка (скажем, пользователь выбрал 'Cust2 - Customer 2'), тогда мне нужно отобразить значение в ячейке столбца комбинированного списка как только "Cust2" вместо полного текста DisplayMember. 1009 *
Этот список DisplayMember представляет собой комбинацию двух полей из связанного с ним источника данных, то есть первая часть указывает на поле CustomerCode, а вторая часть указывает на имя клиента. Мне нужно отображать только CustomerCode в ячейке ComboBox после того, как пользователь выбирает один элемент из выпадающего списка.
Как я могу это сделать? Или я должен придумать свой собственный элемент управления, который будет иметь другой AutoCompleteCustomSource и отображать значение элемента. Даже я тоже путаюсь с таким подходом.
Обновление: Поскольку никто не придумал никакого решения моей проблемы. Теперь я начинаю вознаграждение за это, и если бы кто-нибудь мог предложить мне другой способ реализации той же функциональности, это было бы здорово.
Я даже пытался придумать свой собственный элемент управления и пытался работать с простым списком, чтобы отобразить значение, отличное от выбранного выпадающего списка, даже это не сработало. Есть ли другой способ реализовать это? Любые советы и рекомендации очень заметны.
@ Anurag: Вот код, который я использовал.
Создал сетку в режиме конструктора. Создан один столбец типа «DataGridViewComboBoxColumn», который назван «CustomerColumn».
В файле конструктора это выглядит так:
private System.Windows.Forms.DataGridViewComboBoxColumn CustomerColumn;
Это класс сущностей, который я использовал для источника данных
public class Customer
{
public int Id { get; set; }
public string CustCode { get; set; }
public string CustName { get; set; }
public string NameWithCode { get; set; }// CustCode - CustName format
}
В событии загрузки формы я делаю следующее:
CustomerColumn.DataSource = GetCustomers();
CustomerColumn.DisplayMember = "NameWithCode";
CustomerColumn.ValueMember = "Id";