2016-05-03 3 views
2

Мне нужно использовать элемент управления combobox с элементами, которые можно проверить в столбце DataGridView. Таким образом, я нашел один элемент управления по следующей ссылке https://github.com/sgissinger/CheckBoxComboBox/Использование пользовательского CheckBoxComboBox в столбце DataGridView

В этом основной CheckBoxComboBox работает отлично в демо-версии, и он расширил класс DataGridViewCheckBoxComboBoxColumn, который может быть использован в DataGridView для одного столбца.

Теперь, добавив этот столбец в DataGridView во время разработки, с включенным DataGrid для добавления новых строк, когда данные вставляются в другой столбец, а значение выбрано из этого столбца, параметр ParseFormattedValue() предоставляет пустое исключение.

Также при добавлении новой строки с использованием кода GetFormattedValue() предоставляет исключение null в параметре значения.

В DataGridView Я добавил два столбца, один из которых является простым столбцом текстового поля, а другой - DataGridViewCheckBoxComboBoxColumn, добавляющий в него имена дней недели.

Теперь, когда я пытаюсь добавить новую строку по

dataGridView1.Rows.Add(); 

его показ исключения в GetFormattedValue() как нуль приходит в параметре значение этого.

ответ

2

Выполнено использование пользовательского элемента управления CheckBoxComboBox в DataGridView. Сначала я добавил DataGridViewTextBoxColumn или любой другой в соответствии с вашим требованием, а затем добавлю специальный столбец CheckBoxComboBox в этом DataGridView следующим образом. Прежде всего, необходимо создать список элементов, которые будут показаны в этом Combo Box

List<Status> statuses = new List<Status>(); 
statuses.Add(new Status(1, "Sunday")); 
statuses.Add(new Status(2, "Monday")); 
statuses.Add(new Status(3, "Tuesday")); 
statuses.Add(new Status(4, "Wednesday")); 
statuses.Add(new Status(5, "Thursday")); 
statuses.Add(new Status(6, "Friday")); 
statuses.Add(new Status(7, "Saturday")); 

Затем вам нужно создать объект DataGridViewCheckBoxComboBoxColumn

DataGridViewCheckBoxComboBoxColumn comboboxColumn = new DataGridViewCheckBoxComboBoxColumn(); 

Создать объект ListSelectionWrapper от Статусы объекта List и установите его свойство TextSeparator.

ListSelectionWrapper<Object> wrappedList = new ListSelectionWrapper<Object>(statuses); 
wrappedList.TextSeparator = comboboxColumn.TextSeparator; 

Добавить comboboxColumn другие свойства, как

comboboxColumn.DataSource = wrappedList; 
comboboxColumn.ValueMember = "Selected"; 
comboboxColumn.DisplayMemberSingleItem = "Name"; 
comboboxColumn.DisplayMember = "NameConcatenated"; 

А затем вставить столбец в DataGridView

dgvKioskList.Columns.Add(comboboxColumn); 

После этого ваша колонка вставлена ​​в DataGridView.Теперь, чтобы вставить новую строку с предварительно выбраны некоторые элементы списка, необходимо создать словарь объект как

Dictionary<String, Object> objSelectedDays = new Dictionary<String, Object>(); 

Если вы хотите, чтобы выбрать воскресенье и вторник из ComboBox, например, вы могли бы написать

objSelectedDays.Add("Sunday", statuses[0]); 
objSelectedDays.Add("Tuesday", statuses[2]); 

После этого при вставке новой строки в DataGridView с другими вашими данными и этого objSelectedDays объекта, новая строка будет добавлена ​​к сетке

datagridView1.Rows.Add("ID1", objSelectedDays); 

где «ID1» я вставляете простой DataGridViewTextBoxColumn

Если вы хотите, чтобы прочитать выбранные значения из DataGrid введите отбрасывать ячейку в словарь объекта, как

var values = datagridView1.Rows[0].Cells[1].Value as Dictionary<String, Object>; 

, а затем петли, хотя значения объекта массива читать выбранные значения из конкретные строки CheckBoxComboBox control

Смежные вопросы