索引-1没有值 解决
来源:互联网 发布:mac版迅雷下载没速度 编辑:程序博客网 时间:2024/05/22 02:05
转自:http://www.cnblogs.com/badtree/articles/1799170.html
很多WINFORM的开发人员在DataGridView的开发当中,都会出现“索引-1没有值”这个烦人的问题,其实较早之前,我已经大概知道问题的所在,也找到了解决方法,不过一直没有时间去深入研究一下,今日做了一个测试,发现问题的所在,我不知道这个问题是否应为MS的BUG,但至少我个人认为这个问题不应该出现!
下面先说说构成这个错误的现像。
首先出面这个错误,绝大多数的开发人员都是进行数据绑定之后出现的,而且出现的情况基本上都只得一种,就是开始绑定的数据集是非空的,但数据集的Count=0,在将这个非空的而元素个数为0的数据集绑定到DataGridView后,当更新DataGridView的数据源,即将一个元素个数大于0的数据集绑定给DataGridView后,DataGridView仍能正常显示,以上还是正常的,但问题就出在,当你用鼠标点击DataGridView后,“索引-1没有值”这个恼人的错误就会出现。
其实以上的文字基本上已经让你知道问题的所在,就是第一次绑定的“非空的且元素个数为0的数据集”,经运行时查看对象属性,由于只要数据集不为空,DataGirdView就必需指定当前单元格(CurrentCell),但“非空0元数数据集”的CurrentCell是为null,致使后来更新数据集后,这个CurrentCell仍不会变,因为你的数据集没有改变,只是数据集的数目改变了,所以CurrentCell不变,所以当你点击鼠标进去后,返回的当前行就出错了!
解决的方法很简单,第一,绑定数据集时,判断数据集是否为空,是否元素个数大于0,如果符合条件的才将数据集绑定;第二,如果已经绑定了,可以判断当前数据集的元素个数是否为0,如果大于0则设置CurrentCell。
第一解决方法:
if (dataSource != null && dataSource.Count > 0) { dataGridView1.DataSource = dataSource; }
第二解决方法:
if (dataGridView1.Rows.Count > 0) { dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[1]; }
顺带一提,设置时,Cell的Index对应的列,必需为可视的;
- 索引-1没有值 解决
- 索引 -1 没有值
- 父字符串.indexOf(子字符串) 返回值索引(区分大小写,没有匹配,返回-1)
- MySQL 没有索引 锁全表
- HIVE有没有索引
- DataGridView绑定list对象,出现索引 0 没有值
- DataGridView绑定DataTable,出现索引0没有值的情况
- 一则count(*) count(1) 为啥没有走索引的遭遇
- 查找没有索引的表
- 查询没有索引的表
- C# 解决{System.Data.OleDb.OleDbException (0x80004005): 提示由于将在索引,主关键字或关系中创建重复的值,请求对表的改变没有成功
- 没有解决的问题
- 没有解决的问题。
- 解决ROSPY没有spinOnce
- oracle索引失效解决
- 解决WinForm中ComboBox没有value值的bug
- 解决struts2 <s:doubleselect>二级菜单没有值
- mysql sp_add_Index 先判断有没有索引 没有就添加
- jquery ajax请求对json数据解析的理解
- FP成功命令
- spark文本处理-文章分类
- 面试总结
- Java容器Collection与迭代器Iterator
- 索引-1没有值 解决
- 数据库SQL优化总结 学习必看
- Cornerstone Svn简单使用指南
- easyui combobox 赋值,取值,默认选中。
- 二维码扫描框动画
- Execute to Parse及Soft Pars
- java内存分配
- VLAN命令
- Java里的CompareAndSet(CAS)