Kendo UI Grid:数据源刷新后我失去了分页

时间:2016-05-06 13:34:02

标签: javascript c# pagination kendo-grid

我在cshtml文件中有这个定义:

@{Html.Kendo().Grid<OrderItem>()
    .Name("OrderList")                                            
    .Columns(columns => {
                       .........
                    })
    .DataSource(binding => binding
        .Ajax()
        .PageSize(14)
        .Model(model => model.Id(p => p.No))
        .Read(read => read.Action("SearchSalesOrder", "SalesOrder"))        
    )
    .Sortable()
    .Pageable()
    .Filterable()
    .Scrollable()
    .Render();
}

在控制器中我使用.ToDataSourceResult(request)并且它完美地工作(网格具有分页)。当我必须更改数据源时出现问题。这是因为用户可以过滤,搜索...我通过Ajax调用相同的方法&#34; SearchSalesOrder&#34;有更多参数。使用Javascript,我从响应中获取json并以这种方式更改数据源:

var dataSource = new kendo.data.DataSource({
    data: result.Data,
    pageSize: 14
});
grid.setDataSource(dataSource);
grid.refresh();

之后,寻呼机只显示一个页面。我需要更改保持分页的数据源。

感谢。

1 个答案:

答案 0 :(得分:0)

我想我明白了。 这很简单。我必须在total中添加schema属性。基本上在Javascript中,当我需要更改数据源时,我有这个代码:

var grid = $("#OrderList").data("kendoGrid");
var dataSource = new kendo.data.DataSource({
    transport: {
        read: {
                url: '/Sales/SearchSalesOrder',
                type: 'POST',
                data: {
                    page: 1, pageSize: 14, startDate: startDateParam, endDate: endDateParam,.....
                }
        }
    },
    pageSize: 14,
    serverPaging: true,
    schema: {
        parse: function (response) {
            // Charts refresh
            .......

            return response.Data;
        },
        total: function (response) {
            return response.Total;
        },
        data: "Data"
    }
});
grid.setDataSource(dataSource);
grid.refresh();

有效。 :)