kraeg75 Ответов: 3

DataGridViewComboBoxCell значение не является допустимым


Привет

У меня есть DataGridView, содержащий 2 столбца ComboBox с отношением родитель-потомок. Один перечисляет клиентов, другой - проекты клиентов.

Каждый ComboBox привязан к своему собственному источнику привязки, bsClients и bsClientProjects, с bsClientProjects обновляется по bsClients_CurrentChanged событие.

Это прекрасно работает при сборе данных в первый раз, но разрывается с DataGridViewComboBoxCell значение не является допустимым ошибка при загрузке данных обратно в DataGridView.

Как я могу заставить ComboBox клиентского проекта обновить свой список во время процесса привязки DataGridView?

Овации
Крейг

П. С. привязка источников заполняются с помощью LINQ выполняются на типизированные наборы данных.

[no name]

Как вы обновили колонку.
Поделитесь своим кодом.

kraeg75

Привет Мейсам

Сейчас я уже не могу точно вспомнить контекст. Это было почти два года назад, и у меня ужасная память. Даже не знаю, над каким приложением я работал в то время.

Извиняюсь
Крейг

3 Ответов

Рейтинг:
0

F2Key

Хороший ответ
Это мне очень помогло

((DataGridViewComboBoxColumn)dataGridView1.Columns[e.ColumnIndex]).Items.Add(value);


Спасибо
Халид


Рейтинг:
0

andreimiranda

Установите нулевое значение для ячейки:

ВАР комбобокс = (DataGridViewComboBoxCell)элемента управления datagridview.CurrentRow.Ячейки[имя];
поле со списком.Источник данных = значение null;
комбинированный список.Предметы.Четкий();
поле со списком.Свойство ValueType = typeof на(строку)

практическое руководство.CurrentRow.Ячейки[имя].Значение = null;


Рейтинг:
0

sasanka sekhar panda

просто перейдите к событию DataError элемента управления ur datagridview
и напишите в нем следующий код

if (e.Exception.Message == "DataGridViewComboBoxCell value is not valid.")
           {
               object value = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
               if (!((DataGridViewComboBoxColumn)dataGridView1.Columns[e.ColumnIndex]).Items.Contains(value))
               {
                   ((DataGridViewComboBoxColumn)dataGridView1.Columns[e.ColumnIndex]).Items.Add(value);
                   e.ThrowException = false;
               }
           }


kraeg75

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

kamil shaikh

Thnq U verymuch Sasanka Ur решение работает для меня

Joaquín Lopez B

Эта работа для меня, когда datagridviewcomboboxcell связан с bindingsource:

&ЛТ;заранее Ланг="КС"и GT;практическое руководство dgv = (datagridview)с отправителя;
если (электронная.Исключение исключение ArgumentException)
{
значение объекта = dgv.Rows[e.Параметр rowindex].Клетки[e.Значение columnindex].Значение;
if (! ((DataGridViewComboBoxColumn)dgv.Columns[e.Значение columnindex]).Предметы.Содержать значение))
{
((DataGridViewComboBoxCell)dgv[e.Значение columnindex, Эл.Параметр rowindex]).Значение = Значение Dbnull.Ценность;
//((DataGridViewComboBoxColumn)dgv.Columns[e.Значение columnindex]).Предметы.Добавлять ценность);
е.Значение throwexception = ложь;
}
}
еще
{
ядро.ShowErrorMessage(e.исключение.Сообщение);
е.Отмена = истина;
}</pre>