如何知道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)
)
)
我正在工作 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)
)
)