日期:2014-05-19  浏览次数:20972 次

datagridview大数据量绑定的问题
winform程序,每次需要从数据库中读取10万多条数据,不能分页。因为读取数据库等待时间较长,我用了begininvoke等方法不占用界面线程,同时提示一个滚动条。但是我在给datagridview的datasource赋值的时候(datagridview.datasource=dt),界面就会进入假死状态,等大概10秒钟后绑定完成才能显示出来。我觉得可能是在绑定的时候占用了界面线程,但是我这个方法明明是写在begininvoke里面的,不知道该怎么解决。附代码,各位帮帮忙,多谢啦!
  //创建委托
                delegate   void   GetDateDelegate();
                delegate   void   BindGrid();
                //定义全局datatable
                DataTable   dt;
                private   void   button1_Click(object   sender,   EventArgs   e)
                {
                     
                        //执行方法
                        GetDateDelegate   getdate   =   new   GetDateDelegate(GetDate);

                        getdate.BeginInvoke(null,   null);

                       
                }
               
                ///   <summary>
                ///   取得数据
                ///   </summary>
                void   GetDate()
                {
                        dt   =   BLL.Common.GetAttr();//从数据库获得10万条以上的datatable
                        FillData();
                   

                }

                ///   <summary>
                ///   绑定datagrid
                ///   </summary>
                private   void   FillData()
                {

                        if   (dataGridView1.InvokeRequired)
                        {
                                BindGrid   filldate   =   new   BindGrid(FillData);


                                this.BeginInvoke(filldate);
                        }
                        else