我有一个DatagridviewCombobox
列,并在每行上创建DatagridviewCombobox单元格并向其中添加项目。 当我更改任何(组合框)单元格的值时,它会抛出一个异常,指出Datagridviewcombobox cell value is not valid.
且单元格值变为'1'。在C#中更改DatagridViewComboboxCell值
我正在研究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行(row)使用一个索引,对于总行数(maxRow)使用一个索引,将要输入的项目(项目,值组合列表或任何您需要的值)以及项目的最后部分被添加到datagridview:清晰,简单,不容易出错。 – varocarbas
一旦填充部分正确完成,您必须有序地访问此信息(用于阅读/编辑)。在添加值之前,您必须确保其类型与给定单元格所期望/支持的类型相匹配。你必须确保每一步都有效,并打算解决/来这里问问每个新问题。当前版本的代码非常“不友好”,问题可能无处不在,整个代码重写听起来是最好的事情。 – varocarbas
感谢您的回复。 好吧,我会尽量让它更友好。 但如果你有我的问题陈述,你能告诉我如何得到它的工作? 其实它是一个简单的组合框,并且在组合框下拉列表中有序列号... 我想更改它的值(选定的索引更改),我应该在哪个事件上工作以及如何实现这个功能? 谢谢 – HKhan