当前位置: 代码迷 >> VB Dotnet >> 剔除单元格数据时条件判断语句报错
  详细解决方案

剔除单元格数据时条件判断语句报错

热度:48   发布时间:2016-04-25 02:05:38.0
删除单元格数据时条件判断语句报错
VB.NET2010表格DataGridView2_CellValidating事件中
If e.RowIndex >= 0 And IIf(IsDBNull(DataGridView2.CurrentCell.Value), "", DataGridView2.CurrentCell.Value) <> e.FormattedValue Then...
当我删除当前单元格内容时,
如果针对字符型字段OK,但是针对数值型字段出错提示如下:
从字符串“”到类型“Double”的转换无效
我试着改为:
If e.RowIndex >= 0 And IIf(IsDBNull(.CurrentCell.Value), 0, .CurrentCell.Value) <> e.FormattedValue Then...
还是提示错误,大侠们,咋整?
------解决思路----------------------
引用:

If e.RowIndex >= 0 And IIf(IsDBNull(.CurrentCell.Value), 0, Double.Parse(.CurrentCell.Value.ToString())) <> e.FormattedValue Then..


If e.RowIndex >= 0 And IIf(IsDBNull(.CurrentCell.Value), 0, Double.Parse(.CurrentCell.Value.ToString())) <> e.FormattedValue Then..

------解决思路----------------------
还是不要直接绑定,先new一个
DataTable dt1=dt.Clone();//克隆数据结构
然后循环将列类型改成string
再遍历赋值,全部ToString()赋值给它,然后绑定dt1

否则控件绑定DataTable,修改了控件里的值会自动更新回DataTable,你把null或string.Empty赋值给double类型,必然是不行的
这不是控件报错,是DataTable引发的异常
------解决思路----------------------
还有 在某种意义上 Nothing 是一个值,并不等于空 。 当用IsDBNull Nothing 的时候返回的未必是 真
  相关解决方案