http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 8873|回复: 0

[学习交流] 重新绑定DataGridView后点击DataGridView抛出“索引-1没有值”异常解决方案

[复制链接]
发表于 2016-5-30 16:54:43 | 显示全部楼层 |阅读模式
        Winfrom运用ShowDialog== DialogResult.OK重新绑定DataGridView点击列表报索引超出的异常,而且异常位置报的很是尴尬,直接报到Program的main方法里面的Application.Run(new Form())里面,后来百度了一下。
        就是开始绑定的数据集是非空的list!=null,但数据集的Count=0,在将这个非空的而元素个数为0的数据集绑定到DataGridView后,当更新DataGridView的数据源,即将一个元素个数大于0的数据集绑定给DataGridView后,DataGridView仍能正常显示,但是当你用鼠标点击DataGridView后,问题就来了,“索引-1没有值”这个异常就会抛出。
       第一次绑定的“非空的且元素个数为0的数据集”,经运行时查看对象属性,由于只要数据集不为空,DataGirdView就必需指定当前单元格(CurrentCell),但“非空0元数数据集”的CurrentCell是为null,致使后来更新数据集后,这个CurrentCell仍不会变,因为你的数据集没有改变,只是数据集的数目改变了,所以CurrentCell不变,所以当你点击鼠标进去后,返回的当前行就出错了!
        我的解决方案是这样的:
[C#] 纯文本查看 复制代码
BindingSource bindingSource = new BindingSource();
                    bindingSource.DataSource = uni.Students;
                    dataGridView1.AutoGenerateColumns = false;
                    dataGridView1.DataSource = bindingSource;


        网上的也有一些解决方案,我汇总一下:
第一解决方法:(这个是在初始化绑定的时候先判断列表的count是否大于0,大于0了再绑定)
if (dataSource != null && dataSource.Count > 0) { dataGridView1.DataSource = dataSource; }
第二解决方法:(这个是在之前绑定了count=0的list后再进行绑定时判断将CurrentCell手动指定值)
if (dataGridView1.Rows.Count > 0) { dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[1]; }





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-24 08:09

© 2014-2021

快速回复 返回顶部 返回列表