2013-08-16 93 views
0

我有一个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. 

     } 

任何帮助,将不胜感激。 谢谢。

+0

看起来你需要在你的代码中放一点或者命令,以确切地知道你在做什么,因为当前版本很混乱(这几乎肯定是什么引发了你引用的错误)。在第一个代码中,你使用的是多种或多或少无政府状态的各种索引;越简单越好:对于coutings行(row)使用一个索引,对于总行数(maxRow)使用一个索引,将要输入的项目(项目,值组合列表或任何您需要的值)以及项目的最后部分被添加到datagridview:清晰,简单,不容易出错。 – varocarbas

+0

一旦填充部分正确完成,您必须有序地访问此信息(用于阅读/编辑)。在添加值之前,您必须确保其类型与给定单元格所期望/支持的类型相匹配。你必须确保每一步都有效,并打算解决/来这里问问每个新问题。当前版本的代码非常“不友好”,问题可能无处不在,整个代码重写听起来是最好的事情。 – varocarbas

+0

感谢您的回复。 好吧,我会尽量让它更友好。 但如果你有我的问题陈述,你能告诉我如何得到它的工作? 其实它是一个简单的组合框,并且在组合框下拉列表中有序列号... 我想更改它的值(选定的索引更改),我应该在哪个事件上工作以及如何实现这个功能? 谢谢 – HKhan

回答

1

的组合框细胞selectedindexChange价值和价值的DataGridViewComboBoxCell的异常的错误是无效的..自动并更改所选vlue为“1” .. 我通过在设计中添加DatagridviewComboBoxColumn财产修复了这个问题文件。

this.columnName.ValueType = typeof(long); 

的typeof(长)//这就是我想要的东西展现在datagridviewcombobox列中的值。

问题已解决。 谢谢。

+0

感谢varocarbas为您的建议和快速回复..感谢:) – HKhan

+0

因为comboboxcell没有得到它的实际匹配类型 这就是为什么抛出“DataGridviewComboboxcell值无效” – HKhan