C # DataGridViewComboBoxColumn проблема связывания - PullRequest
4 голосов
/ 21 сентября 2010

Привет всем!Полагаю, это мой первый пост на StackOverFlow.com: -)

У меня уже давно такая проблема.Для простоты предположим, что у нас есть 2 таблицы базы данных с именами "книги" и "категории" со следующей схемой:

книги (id,title, catId)
category (id, catName)

Очевидно, что поле "catId" в таблице "books" является внешним ключоми указывает категорию, к которой относится книга.

Я создал необходимые классы LinQ to Sql и создал необходимый объект bindingSource.Я пытаюсь отобразить все книги в объекте DataGridView.Я хочу, чтобы в нем был столбец с именем "Категория" , который имеет тип DataGridViewComboBoxColumn , содержащий все существующие категории, и для каждой книги отображается категория, к которой относится конкретная книга.Пользователь может переназначить категорию книги, выбрав другую категорию в поле со списком.

Мне удалось сделать именно то, что я хочу, с помощью ComboBox , и он работает так, как я хочу.Но когда дело доходит до DataGridView , я просто не могу понять это.

Любая помощь будет принята с благодарностью. Я потратил несколько дней, чтобы что-то выяснить, но пока не повезло: -(

1 Ответ

8 голосов
/ 21 сентября 2010

Это должно работать:

// create the column (probably better done by the designer)
DataGridViewComboBoxColumn categoryColumn = ...


// bind it
categoryColumn.DataSource = db.Categories.ToList();
categoryColumn.DisplayMember = "catName";  // display category.catName
categoryColumn.ValueMember = "id";         // use category.id as the identifier
categoryColumn.DataPropertyName = "catId"; // bind the column to book.catId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...