问题描述
相信很多人都用过datagridview的自定义列calendarcolumn论坛上有很多例子代码一般来说如下引用即可DimcolAsNewCalendarColumn()Me.dataGridView1.Columns.Add(col)
但目前我的需求是要在dgv中手动添加行,所以我的dgv就这样设置的:dgv.AllowUserToDeleteRows=Falsedgv.AllowUserToAddRows=Falsedgv.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.Filldgv.RowHeadersVisible=Falsedgv.SelectionMode=DataGridViewSelectionMode.FullRowSelectdgv.AllowUserToResizeRows=Falsedgv.AutoGenerateColumns=Falsedgv.EditMode=DataGridViewEditMode.EditOnEnterdgv.MultiSelect=False
问题来了,每次添加一行,点击日历列就会报错,如下:请大家帮下菜鸟。。。谢谢!
解决方案
解决方案二:
应该是表格中还没有数据,一行都没有。你向当前行的制定列赋值当然会出错,因为当前行不存在啊。先判断一下总行数或当前行号。
解决方案三:
更正:当前行的指定列
解决方案四:
引用1楼Tiger_Zhao的回复:
应该是表格中还没有数据,一行都没有。你向当前行的制定列赋值当然会出错,因为当前行不存在啊。先判断一下总行数或当前行号。
dgv.datasource设置了一个datatable新加行是通过添加datatable新行实现的,新行中也设置了日期列的初始值,所以当前行号应该是0进行新增行后,新行可以显示出来,日期列上也有值但是一旦点击这个值就会出错
解决方案五:
引用2楼Tiger_Zhao的回复:
更正:当前行的指定列
能讲详细些吗?
解决方案六:
既然是添加一行时出错,这是该行还在初始呢。事件中的rowIndex时将要添加的行号,不等于该行已经可以访问了。检查下Me.rowIndex。还有到底时Me.Value出错还是ctl.value出错?
解决方案七:
引用5楼Tiger_Zhao的回复:
既然是添加一行时出错,这是该行还在初始呢。事件中的rowIndex时将要添加的行号,不等于该行已经可以访问了。检查下Me.rowIndex。还有到底时Me.Value出错还是ctl.value出错?
不是添加行的时候出错,行已经添加成功了,而且日期列也有显示,是点击日期列的时候报错出错应该是me.value但是我看不懂什么意思,请看我对me.value的截图
解决方案八:
InitializeEditingControl是初始化编辑模式的行触发的。和已添加[b]显式模式的行没关系。就是控件还在初始,这时不能取Value值。