DataGridView绑定List<t>对象,偶尔出现索引 |1 没有值|C/S开发框架</t>
只要一点击DataGridView控件,马上就会跳出System.IndexOutOfRangeException异常,具体内容如下:
未处理 System.IndexOutOfRangeException Message="索引 -1 没有值。"
解决方案
使用 BindingSource 对象绑定DataGridView 控件的数据源。
private void DoBindingDetail(object source)
{
BindingSource bindingSource = new BindingSource();
bindingSource.DataSource = source;
gvDetail.DataSource = bindingSource;
}
在向DataGridView绑定Ilist<T>类型的对象是,如果对象的成员为0,那么就会出现此问题。而且即使重新绑定DataGridView的数据源,也会继续存在此问题,解决的方法就是在向DataGridView绑定Ilist<T>对象是,要保证其中至少有一个成员,否则宁可不绑定(虽然不是最完美的解决方法)。其实最好的方法,是用BindingList<T>对象代替Ilist<T>对象作为DataGridView的数据源,即可彻底解决此问题,而且能实现DataGridView修改时与数据源的自动更新。
扫一扫加作者微信