Datagrid和90000行。最好的办法

时间:2012-06-22 19:28:16

标签: c# datagrid

我有datagrid和90000行。

90000行数据网格打开很晚。打开9秒。什么是加快开放的最佳方式?

我的代码:

string sqlSorgu = "SELECT "+
              " customer.id," +
              " customer.medaxil_status," +
              " customer.hesab_nomresi," +
              " customer.soyad ," +
              " customer.ad ," +
              " customer.ataadi ," +
              " customer.mebleg ," +
              " customer.teskilat_kodu" +

                   " FROM customer  ORDER BY customer.id ASC ";
                    OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sqlSorgu, Program.esas.bazayaQosul);

                    setx = new DataSet();
                     datatabmedaxil = new DataTable();
                    setx.Tables.Add(datatabmedaxil);

                    dataAdapter.Fill(datatabmedaxil);
                    MedaxilGridView1.DataSource = datatabmedaxil;


            if (this.MedaxilGridView1.RowCount > 0)
            {
                for (int i = 0; i < this.MedaxilGridView1.RowCount; i++)
                {
                    if (this.MedaxilGridView1["medaxil_status", i].Value.ToString() == "1")
                        this.MedaxilGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Pink;
                    else
                        this.MedaxilGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Empty;
                }
            }

请帮帮我

3 个答案:

答案 0 :(得分:1)

虽然我几乎同意其他所有人在一个视图中的90,000行完全无法使用,但有时支付账单的人会做出愚蠢的决定....

看起来这可能适合您的需求:

在Windows窗体DataGridView控件中使用即时数据加载实现虚拟模式:MSDN

答案 1 :(得分:0)

我知道没有简单直接的解决方案。

我会考虑使用以保持控制的选项:

  • 搜索过滤器
  • 将输出限制为合理的行数(例如1000),并显示列表被截断的警告。
  • 分页(将结果分成页面)

答案 2 :(得分:0)

与其他人一致认为90000行无法使用。这里有关于分页的StackOverflow的文章:

Implementing paging using Linq

我还强烈建议您不要依赖控件来处理分页。它所要做的就是将90000行放入内存,并将页面放入内存中。同样缓慢,同样可怕,同样无法使用。

除了分页之外,您还需要考虑将设置大小降低到合理数量的方法。即使分页90000行对于任何人来说也是太多了。这表示用户体验在每页显示54个项目时必须翻阅1667页才能到达最后一条记录。问问自己,您是否希望翻阅那么多项目以找到您想要的内容?

关于你的Foxpro声明?那么有许多因素在起作用,例如本地与远程,数据大小,数据存储方式等.140000行,200字节数据来自本地硬盘,与90000行不同,用XML序列化,来自一个服务,转发到每行有1K数据的公司服务器。