我现在遇到一个很奇怪的问题,dataGridView绑定之后 可以正确的显示 这一点是没有问题的,就是在我点击绑定之后的dataGridView1时 会报一个错误 到主函数里面去了Main(); Application.Run(new Login());索引-1没有值!怎么会报这种错误那?? 很是不解 说明一点:我的数据集是从缓存里面得到的这一点应该也是没有问题的啊
说明:
this.dataGridView1.AutoGenerateColumns = false;
this.dataGridView1.AllowUserToAddRows = false;
dataGridView1.DataSource = null;
list = CacheStrategy.Instance.GetObject(CacheKey.OrderSchedulePerson) as List<OrderSchedulingService.T_Employee_Work_RecordEntity>;
this.dataGridView1.DataSource = list;
ChangeBindBata(dataGridView1);这个是我绑定的时候使用的代码 就是先把list放在缓存里面 然后再去缓存中去取这一点是没有问题的,绑定也是可以绑定上的,就是绑定完成之后 再点击dataGridView1时报错。。。
这个是点击一个确定按钮的时候 把List的加载的缓存 所以应该是先dataGridView1.DataSource = null;清空数据源 然后再绑定,这里是不是有问题啊? 但是如果不这样的话新加载的缓存是没有办法绑定上的啊?
问题的原因是这样的:由于数据源指定的是List 而这个List是从缓存中得到的, 指定了这个: dataGridView1.DataSource = null,数据源指定为List之后datagridview 不会自动更新 ,编译器不知道 所以会出现这个问题:索引-1没有值
而BindingList是一个泛型容器,可以直接赋值给DataGridView的DataSource。而且以后的数据变化,只需要维护BindingList里的东西就行了,DataGridView自动更新数据显示。