Datagridview-使用列表循环填充的更快方法?

时间:2019-05-20 14:09:59

标签: c#

目前,我正计划向datagridview中添加约500K列表。

类具有多个字段,每个列表具有13个字段。 但我现在只绑定7个字段。

问题是,似乎添加时间太长。像5秒5K一样可怕。

有什么方法可以优化这一点? 还是应该扔掉datagridview并考虑其他一些视图?

    private void UpdateDataGrid()
    {
        this.dataGridView1.Rows.Clear();
        for (int i = 0; i < gVar.gTagCount; i++)
        {
            this.dataGridView1.Rows.Add(new object[]
            {
                gVar.Tags[i].TagCount,
                gVar.Tags[i].Name,
                gVar.Tags[i].Score.Story,
                gVar.Tags[i].Score.Drawing,
                gVar.Tags[i].Score.Drawing,
                gVar.Tags[i].Score.Memetic,
                gVar.Tags[i].DupeCount
            });
        }
    }

3 个答案:

答案 0 :(得分:2)

请考虑使用分页,以便您不会一次加载所有数据。下面链接到的问题的答案提供了一个示例。

How can we do pagination in datagridview in winform

答案 1 :(得分:2)

根据我们讨论的方法,将是这样:

首先创建一个新类,我将其命名为TagsMin。该类应包含您想要在datagridview中使用的7个内容。

第二,我将填充一个该类的列表(您需要使用所需的内容来完成它):

var tagList = gVar.Tags.Select(x => new TagsMin() { TagCount = x.TagCount, Name = x.Name... }).ToList()

最后一步是将其绑定到datagridview:

dataGridView1.DataSource = tagList;

答案 2 :(得分:0)

您是否可以尝试避免循环并以标准方式直接绑定列表:

dataGridView1.DataSource = null;
dataGridView1.DataSource = gVar.Tags;