У меня есть столбец DatagridviewCombobox
, и я создаю ячейки DatagridviewCombobox в каждой строке и добавляя к нему элементы. Когда я изменяю значение какой-либо ячейки (combobox), он выдает исключение, говорящее, что Datagridviewcombobox cell value is not valid.
и значение ячейки становится «1».Значение DatagridViewComboboxCell, измененное в C#
Я работаю над событием datagridview_currentcelldirtystatechange
, но не смог заставить его работать.
Код, приведенный ниже, создает строки и заполняет ячейки со списком с номерами последовательностей.
int _rowLimit =1;
for (int i = _rowLimit - 1; i < _rowLimit; i++)
{
datagridview.Rows.Add();
item = i + 1;
datagridview[myColumn, i].Value = _rowLimit;
DataGridViewComboBoxCell oCell = datagridview.CurrentRow.Cells[myColumn] as DataGridViewComboBoxCell;
oCell.Items.Add(item);
((DataGridViewComboBoxColumn)datagridview.Columns[myColumn]).Items.IndexOf(_rowLimit);
((DataGridViewComboBoxColumn)datagridview.Columns[myColumn]).Items.Insert(index, item);
}
И ниже то, что я делаю в datagridview_currentcelldirtystatechange
случае:
for (int innerIndex = 0; innerIndex < datagridview.Rows.Count; innerIndex++)
{
long sequence = 3;
long oldSequence = 2;
long tempValue= Convert.ToInt64(datagridview.Rows[innerIndex].Cells[myColumn].Value);
if (tempValue <= sequence && tempValue> oldSequence)
{
datagridview.Rows[innerIndex].Cells[myColumn].Value = tempValue+ 1; // increment the sequence
// value here i am getting is correct , but it doesn't show in the DatagridviewCombobox cell where it gets changed of gridview and the mentioned exception is thrown.
}
Любая помощь будет оценена. Спасибо.
Похоже, вам нужно поместить бит или заказ в свой код, чтобы точно знать, что вы делаете, потому что текущая версия довольно запутанна (и это почти наверняка вызывает то, что вызывает ошибки). В первом коде вы используете различные индексы, которые используются более или менее анархическим способом; тем проще: используйте один индекс для строк coutings (строка), переменную для полных строк (maxRow), элемент, который вы вводите (элемент, список значений, поле со списком или все, что вам нужно), и последнюю часть, в которой элементы добавляются в datagridview: четкие, простые и не подверженные ошибкам. – varocarbas
После того, как заполняющая часть была выполнена правильно, вам также необходимо получить доступ к этой информации (для чтения/редактирования). Перед добавлением значения вы должны убедиться, что его тип совпадает с тем, что поддерживает данная ячейка /. Вы должны убедиться, что каждый шаг работает и намеревается решить/прийти сюда, чтобы задать каждую новую проблему. Текущая версия вашего кода довольно «недружелюбная», проблемы могут быть повсюду, и вся переработка кода звучит как лучшая вещь. – varocarbas
Спасибо за ответ. хорошо, я постараюсь сделать его более дружелюбным. , но если вы получили мое заявление о проблеме, не могли бы вы рассказать мне, как заставить его работать? На самом деле это простая комбобокс, и в выпадающем списке combobox есть порядковые номера ... Я хочу изменить его значение (выбранное изменение индекса), на каком событии я должен работать и как это можно достичь? Спасибо – HKhan