在将新数据加载到网格后,我遇到了Kendo网格寻呼机行为不端的问题。页面加载时加载网格,配置如下:
U1
我在页面上有一些控件作为网格内容的过滤器。 getFilterModel函数返回这些过滤器的值。当用户点击"过滤"按钮,我在网格数据源上调用read。
@(Html.Kendo().Grid<MyModel>()
.Name("Grid")
.Columns(columns =>
{
//snipped
})
.Scrollable()
.Sortable(sort => sort.Enabled(true))
.Pageable(pager => pager.PageSizes(new int[] {10, 25, 50, 100}))
.Events(events => events.DetailExpand("detailExpand").DetailCollapse("detailCollapse").DataBinding("onDataBinding"))
.ClientDetailTemplateId("template")
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Sort(sort => sort.Add(Model.sort).Order(Model.Direction))
.PageSize(Model.PageSize)
.Events(events=>events.Error("onError"))
.Read(read => read.Action("Summary", "Summary").Data("getFilterModel")))
.Events(events => events.DataBound("dataBound"))
.Resizable(resize => resize.Columns(true))
.Reorderable(reorder => reorder.Columns(true))
);
这在初始页面加载时可以正常工作,如果我用多个行重新加载网格&lt; =原始行数。如果我使用更多行重新加载,则寻呼机显示正确的计数。但是,如果我尝试单击以前进到下一页,则寻呼机将恢复为仅显示1页,并且网格显示为空。
示例:初始加载包含3条记录,页面大小为25. Pager显示1页。好。更改过滤器,以便网格加载42行。寻呼机显示2页,设置为第1页,以及&#34; 1-25项42项&#34;。点击进入第2页;网格显示没有行,寻呼机显示1页和25个项目中的&#34; 26-25&#34;
寻呼机是否需要以某种方式明确重置?
这是Kendo MVC的旧版本... DLL显示版本2013.3.1119.340。
答案 0 :(得分:0)
在这种情况下,剑道MVC和我自己超越了自己。
getFilterModel
函数返回了一个包含Page
和PageSize
属性的对象,这些属性将转换为HTTP请求中的查询参数名称。这些又成为FilterModel对象的属性,FilterModel对象是控制器操作的模型。在服务器端,控制器操作调用Kendo ToDataSourceResult
扩展方法,该方法显然解释了Page
和PageSize
,并且仅返回结果的第一页。
将这些属性的名称更改为GridPage
和GridPageSize
解决了这个问题。我把它们包括在内是因为我想将它们作为网格状态的一部分来保留,但我可能最好还是找到另一种方法来做到这一点。