DataGridView动态加载部分数据防止卡顿[源码]

DataGridView是常用表格数据显示控件,但数据量特别大时,直接绑定数据会卡顿。可采用动态加载方式,加载部分数据,用户滚动到边界时再加载后续数据,通过控制每次加载的行或列数量保证加载速度,还给出了动态加载列的示例及完整代码。

DataGridView是我们显示表格数据最常用的控件, 非常好用,功能强大。但是当数据量特别大时(不管是行还是列,行的影响会小一些,列的影响特别明显)直接绑定数据会占用很久的时间,并且不能响应用户的操作而造成卡顿。所以我们就需要用到动态加载,加载部分数据,当用户滚动到边界时再加载后面的一部分数据,我们控制每次加载的行或者列的数量来保证加载速度。我们以动态加载列为示例,下面示例建立了一个1000列的table,每次加载100列供当前DataGridView显示。我们已经尝试过创建10000列的table,用此示例动态显示没有任何问题。如果直接绑定要等20分钟左右才能加载出来。

完整代码如下:form上面有两个textbox用来指定行和列的数量,一个button用来create Source table. 一个DataGridView且AutoGenerateColumns=false

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        DataTable MasterTable = null;//Source table 500 row x 1000 col
        int MaskSize = 50; //Load MaskSize*2 Columns every time
        int MaskStart = 0; //Display columns start index
        int MaskEnd = 0;//Display columns end index

        //To Create Source Table, column and Row counts defined by ColCnt and RowCnt from textbox on form
        private void createTableButton_Click(object sender, EventArgs e)
        {
            int ColCnt = int.Parse(textBox1.Text.Trim());//1000
            int RowCnt = int.Parse(textBox2.Text.Trim());//500
            //create master source table
            MasterTable = new DataTable();
            for (int c = 0; c < ColCnt; c++)
            {
                MasterTable.Columns.Add("C" + c.ToString(), typeof(float));
            }
            for(int r=0;r< RowCnt; r
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值