加载新数据后,Kendo网格寻呼机问题

时间:2016-03-09 17:06:33

标签: kendo-ui kendo-asp.net-mvc

在将新数据加载到网格后,我遇到了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。

1 个答案:

答案 0 :(得分:0)

在这种情况下,剑道MVC和我自己超越了自己。

getFilterModel函数返回了一个包含PagePageSize属性的对象,这些属性将转换为HTTP请求中的查询参数名称。这些又成为FilterModel对象的属性,FilterModel对象是控制器操作的模型。在服务器端,控制器操作调用Kendo ToDataSourceResult扩展方法,该方法显然解释了PagePageSize,并且仅返回结果的第一页。

将这些属性的名称更改为GridPageGridPageSize解决了这个问题。我把它们包括在内是因为我想将它们作为网格状态的一部分来保留,但我可能最好还是找到另一种方法来做到这一点。