【问题标题】:dotNet C# DataGridView Databinding performancedotNet C# DataGridView 数据绑定性能
【发布时间】:2016-08-18 19:21:10
【问题描述】:

我有一个带有 BindingSource 的 DatagridView,其中大约 5000 个 DataItems 来自 LiteDB 源。这些 DataItem 包含一个小预览图片。

我的问题和问题是:我能以某种方式提高 Databind 的性能吗?还是我用错了?

这是我的数据对象

public class VEFile
{
    public VEFile()
    {
        Tags = new List<VETag>();
    }
    public static DateTime LastPlaybacked { get; set; }

    public string Path { get; set; }
    public string FileName { get; set; }
    public string LastAccessed { get; set; }

    public byte[] Thumbnail { get; set; }
    public List<VETag> Tags { get; set; }
    [System.ComponentModel.Browsable(false)]
    public string Id { get; set; }
    public DateTime LastModified { get; set; }
    public long FileSize { get; set; }
    [BsonIndex]
    public int ViewCount { get; set; }
}

还有我的数据绑定代码:

using (var db = new MyLiteDatabase(connectionString))
        {
            var filesCollection = db.GetCollection<VEFile>("files");

            var results = filesCollection.Include(x => x.Tags).FindAll().OrderByDescending(x => x.LastModified);

            originalBindingList = new BindingList<VEFile>(new List<VEFile>(results));
            bindingSource1.DataSource = originalBindingList.OrderByDescending(x => x.LastModified);
        }

最后一行

        bindingSource1.DataSource = originalBindingList.OrderByDescending(x => x.LastModified);

挂断几秒钟,然后 RAM 使用率上升约 2GB,然后立即下降。

【问题讨论】:

    标签: c# data-binding datagridview litedb


    【解决方案1】:

    您需要使用分页。 DataSource 对象将通过设置 TotalNumberOfItems、CurrentPageIndex、PageSize 属性来支持这一点。

    然后您将调整查询以仅选择 PageSize 行数。使用 LINQ 的 Take 和 Skip 方法。

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 2014-12-30
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 2013-02-06
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多