Извлечение базы данных за списком данных в поле со списком данных - PullRequest
3 голосов
/ 17 октября 2011

У меня есть DataGridView с привязкой к данным. Одним из его столбцов является DataGridViewComboBox. DataGridViewComboBox также привязан к данным. Все работает очень хорошо, пока я не хочу получить DataRow за DataGridViewComboBox выбранный элемент (не DataRow DataGridView, а datarow, который заполняет DisplayMember и ValueMember комбинированного списка!).

Как мне это сделать? Мне это нужно, потому что мне нужно отобразить целый набор данных рядом с DisplayMember и ValueMember, и эти данные присутствуют в базе данных DataTable, с которой связан DataGridViewComboBox.

Спасибо за вашу помощь заранее.

Daniel

1 Ответ

1 голос
/ 17 октября 2011

Это подробно описано в этой статье MSDN .

Что вам нужно сделать, это установить ValueMember столбца ComboBox в свойство, которое возвращает ссылку на сам бизнес-объект.

То есть, скажем, у вас есть объект Employee, и список из них является источником данных для столбца ComboBox. Сотрудник, возможно, будет выглядеть так:

public Employee
{
    int Age { get; set; }
    string Name { get; set;}
    Employee Self
    {
        get { return this; }
    }
} 

Затем вы создаете столбцы ComboBox следующим образом:

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.Name = "Combo";
col.ValueMember = "Self";
col.DisplayMember = "Name";
datagridview1.Columns.Add(col);

Затем, когда вы получаете свойство Value ячейки ComboBox, вы возвращаете объект Employee:

Employee e = datagridview1.Rows[0].Cells["Combo"].Value as Employee;
...