Combobox в связанном DataGridView - PullRequest
3 голосов
/ 29 мая 2010

У меня есть элемент управления DataGridView, который связан с таблицей базы данных. Я хочу, чтобы один из столбцов в gridview имел тип combobox. Поле со списком должно содержать список жестко закодированных строк, который одинаков для всех строк в сетке данных. Одним из полей в моей таблице базы данных является индекс для этого списка жестко закодированных строк.

Я программно добавил новый столбец в сетку вида «DataGridViewComboBoxColumn», который успешно создает столбец с выпадающими списками. Однако это не связано с полем индекса в моей таблице БД.

Поле индекса в моей таблице БД фактически автоматически связывается со столбцом с помощью метода DataAdapter :: Fill. Я установил этот столбец как скрытый, поэтому он скрыт для пользователя.

Очевидно, что непосредственно перед обновлением адаптера данных я могу программно исправить скрытый столбец в моей таблице данных с помощью SelectedIndex моего комбинированного списка. Просто интересно, есть ли лучший способ сделать это?

[править]
На самом деле, вместо того, чтобы делать это перед обновлением адаптера данных, я, вероятно, лучше всего использую событие изменения ячейки в выпадающих списках, чтобы обновить скрытый столбец. Не уверен, отвечаю ли я здесь на свой вопрос или есть лучший способ сделать это. Кажется, это работает, но кажется, что это обходной путь. [/ Править]

Спасибо за любую помощь в этом,
Dan.

1 Ответ

5 голосов
/ 30 мая 2010

Если вам нужно, чтобы SelectedValue из ComboBox был индексом, а не строкой, заполните ComboBox списком пользовательских объектов, а не списком строк:

dgvComboColumn.DataSource = new []
{
    new { Index = 1, Text = "Foo" },
    new { Index = 2, Text = "Bar" },
    new { Index = 3, Text = "Baz" }
};
dgvComboColumn.DisplayMember = "Text";
dgvComboColumn.ValueMember = "Index";
dgvComboColumn.DataPropertyName = "(the DB column that stores the index)";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...