使用二维arrayList加载DataGridView时出现问题

时间:2010-08-26 00:18:13

标签: datagridview arraylist

我正在编写一个应用程序,我从数据库加载两个DataGridViews。我已成功使用dataAdapter.Fill(DataSet)完成此操作,但我遇到的问题是来自数据库的数据有数万条记录。它第一次运行时非常慢(太慢,大约7分钟)。下次运行时间更合理(约35秒)。所以我想我会尝试另一种方法:用数据加载一个二维arraylists然后将其传递给datagridviews。最初我认为这将是一个快速测试,看看时间收益,如果有的话,但事实证明它比我想象的更难。这就是我所拥有的:

while(dr.Read())
        {



            for (int l = 0; b && l <= dr.FieldCount-1; l++)
            {
                DataGridViewColumn column = new DataGridViewColumn();
                column.CellTemplate = cellTemplate;
                column.FillWeight = 1;
                column.Name = dr.GetName(l);
                dgv.Columns.Add(column);
            }
            b = false;

            for (int i = 0; i <= dr.FieldCount - 1; i++ )
            {
                row.Add(dr.GetValue(i));
            }

            table.Add(row);

            row = new System.Collections.ArrayList();
        }

        dgv.DataSource = table;

注意,我会创建一个类来构建数据(每列的数据成员,但列可以更改),因此是arrayList的想法。 datagridview最终具有正确的列,具有正确的名称和正确的数字或​​行,但是行都是空白的,并且它添加了与arrayList的结构相关的其他列。我究竟做错了什么?有没有更好的办法?任何帮助/反馈将不胜感激! : - )

谢谢,

1 个答案:

答案 0 :(得分:0)

好的......我弄清楚了......很多;-)我放弃了Arraylist的想法,只是将值直接添加到dgv中。这就是我所做的,如果有人关心: - )

...
    while(dr.Read())
    {
        for (int l = 0; b && l <= dr.FieldCount-1; l++)
        {
            DataGridViewColumn column = new DataGridViewColumn();
            column.CellTemplate = cellTemplate;
            column.FillWeight = 1;
            column.Name = dr.GetName(l);
            dgv.Columns.Add(column);
        }
        b = false;

        dgvRow = new DataGridViewRow();

        for (int i = 0; i <= dr.FieldCount - 1; i++ )
        {

            dgvCell = new DataGridViewTextBoxCell();
            dgvCell.Value = dr.GetValue(i).ToString();
            dgvRow.Cells.Add(dgvCell);
        }

        dgv.Rows.Add(dgvRow);
    }
...

这引出了我的下一个问题:Best way to fill DataGridView with large amount of data