如何知道kendo grid dataSource的变化

How to know kendo grid dataSource change

我正在工作 kendo 网格,该网格将包含大量数据。

我需要在按钮单击事件和下拉列表更改时刷新网格数据 事件它通过在点击和下拉更改时读取网格数据工作正常 events.But 网格数据正在重新加载即使它没有变化这意味着数据与 grid.so 的先前数据相同它是对我造成性能问题。

如何知道网格数据是否发生变化?

你提到的问题是性能,你问的功能是比较你的大数据是否有变化。然后将客户端中的大数据与数据库中的数据进行比较,性能也不会发生变化,IMO 会使速度变慢。 所以考虑使用服务器端操作,例如分页。

但是关于你的问题,我会添加一些链接来帮助你做一些比较逻辑:

MSDN - Enumerable.SequenceEqual

Whosebug - Is there a built-in method to compare collections in C#?

解决方法:只向服务器请求当前页面相关的数据,如果不相等则进行比较,然后将数据返回给客户端(浏览器)。

你不能为所欲为。但是,如果您正确实施分页,您的网格将只检索当前页面,这应该不会太多。

如果您使用像 Entity Framework 这样的 ORM,这很容易,因为 ToDataSourceResult 将更改查询以包括分页、排序和过滤选项。

像这样:

控制器

public ActionResult GetGridData([DataSourceRequest]DataSourceRequest request)
{
    using (var context = new EntityFrameworkContext()) 
    {
        IQueryable<MyModel> result = context.Products.Where(w => w.Something).Select(s => new MyModel());
        return Json(result.ToDataSourceResult(request));
    }
}

查看

@(Html.Kendo().Grid<MyModel>()
    .Name("Grid")
    .Columns(columns =>
    {
        columns.Bound(c => c.Name);
        columns.Bound(c => c.Date);
    })
    .Pageable(pageable => pageable
        .Refresh(true)
        .PageSizes(true)
        .ButtonCount(10)
        .PageSizes(new[] { 20, 50, 100 }))
    .DataSource(ds => ds
        .Ajax()
        .Read(r => r.Action("GetGridData", "Home"))
        .PageSize(20)
    )
)