当前位置:编程学习 > C#/ASP.NET >>

datagridview数据源绑定,后台修改数据源问题

界面主线程初始化设置datagridview数据源,这里我是把数据源绑定到dsTable.DefaultView;
datagridview.DataSource = dsTable.DefaultView; 

dsTable是界面窗体form1下字段,public DataTable dsTable;

后台程序backgroundWorker1_DoWork修改dsTable值.
这里我做了2个操作:
1)dsTable.Clear();
2)帮增量数据DataRow插入到dsTable.

后台程序操作完后,发现datagridview不显示.非要去点下datagridview列头才显示数据(其实点击列头,因为列头有个排序功能).


针对这个问题困扰了我一天,是不是在别的线程去修改datagridview数据源的全局变量dsTable,datagridview不刷新显示.
后来我做了个修改:
我把开始dsTable.DefaultView改成 datagridview.DataSource = dsTable.Copy().DefaultView; 
然后在backgroundWorker1_RunWorkerCompleted里面重新绑定下 datagridview.DataSource = dsTable.Copy().DefaultView; 
虽然修改能解决这个绑定问题,但是同事说winform里面数据源一般绑定一次就够了,不需要在设置.

想问下我想实现这个功能,一般是怎么去实现的.
dsTable.Clear();是为了取增量数据,所以先清空.
如果我想上述2个操作中,datagridview不时时刷新数据,同事要我把修改前后加上 dsTable.BeginInit();dsTable.EndInit() --------------------编程问答-------------------- 问题比较急.在线等解决. --------------------编程问答-------------------- 楼主为何不试试用
datagridview.DataSource = dsTable --------------------编程问答-------------------- 修改完重新绑定就可以或者刷新一下DataGridView看看 --------------------编程问答-------------------- 也尝试了DataTable直接绑定.一样 --------------------编程问答--------------------
引用 2 楼 zxw0558 的回复:
楼主为何不试试用
datagridview.DataSource = dsTable


可以试试...DataTable数据修改后会映射到DataGridView,不需要重新绑定..反之一样! --------------------编程问答-------------------- 我想我关键点是修改全局dtResult时候,执行了dtResult.Clear()操作,然后又执行添加行.这些操作丢backgroundWorker1中做的.所以最后显示发生错误. --------------------编程问答--------------------
引用 6 楼 michael_z777 的回复:
我想我关键点是修改全局dtResult时候,执行了dtResult.Clear()操作,然后又执行添加行.这些操作丢backgroundWorker1中做的.所以最后显示发生错误.


你修改过数据后想在datagridview里面更新最好,重新绑定或者refresh()下 --------------------编程问答-------------------- 对啊,直接datagridview.DataSource = dsTable;就很好啊,可以直接映射,看起来还简洁!实在不行,再加个Refresh; --------------------编程问答-------------------- datagridview是否提供一个方法,在dtResult修改中暂停datagridview绘制.
待dtResult修改好,一次性修改datagridview绘制
--------------------编程问答-------------------- 关键是怎么取到datagridview里面的数据?????把取出的数据放到一个datetable,或者是dataset里 --------------------编程问答-------------------- 更新datagridView以后,用this.Refresh();刷新一下界面看看。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,