DataGridView Winforms заполнить ComboBoxCell - PullRequest
3 голосов
/ 01 мая 2011

Я делаю одно программное обеспечение, в котором пользователь создает счет-фактуру, используя datagridview.У меня есть несколько ячеек текстового поля и несколько ящиков со списком.Я хочу кое-что сделать:

  1. Я хочу заполнить ячейки комбинированного списка из таблицы базы данных.Я попробовал это:

    DataTable tblItems = UtilityClass.GetDataTable("SELECT ItemName,ItemID FROM Items"); DataGridViewComboBoxColumn itemCol=DataGridViewComboBoxColumn)dataGridViewNewBill.Columns["ColItem"]; itemCol.DataSource = tblItems; itemCol.DisplayMember = "ItemName"; itemCol.ValueMember = "ItemID";

    Но, после того, как элемент выбран, и когда фокус перемещен в другую ячейку, элемент, выбранный в выпадающем списке (или текст текстового поля)ячейка исчезает.
    EDIT : создается впечатление, что при выборе элемента в выпадающем списке все ячейки выпадающего списка получают это значение, поскольку они имеют один и тот же источник данных!Но даже если это так, почему ячейка combox / textbox теряет свое значение после перемещения фокуса на другую ячейку.

Ответы [ 2 ]

1 голос
/ 03 мая 2011

Что ж, теперь я совершенно уверен, что, когда мы используем один и тот же источник данных для двух или более комбинированных списков, изменение значения одного вызывает изменение и других.

Я отключил добавление новых строк и

  1. В форму загрузки добавлена ​​одна строка, установка источника данных этого конкретная ячейка со списком (не колонка).
  2. Когда пользователь переходит к последней ячейке и нажимает клавишу ввода, я создаю другой ряд и сделать так же, как выше.

Таким образом, каждая ячейка имеет свой источник данных, хотя мне нужно проделать дополнительную работу, но это сработало.

1 голос
/ 02 мая 2011

Вы обрабатываете какие-либо конкретные события, которые стирают данные.

При выборе значения его выбирают для других ячеек, поскольку сетка использует общий ComboBox для всех ячеек столбца комбинированного списка, который является EditingControl для включения выбора значений. колонны.

Вы можете управлять объектом, обрабатывая EditingControlShowing событие

Попробуйте установить этот режим

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