jquery - 在对列进行排序之前,Kendo 网格最初不会分页

标签 jquery asp.net kendo-ui

再次,分页不起作用,直到我单击列标题进行排序,然后分页似乎工作正常。

<script type="text/javascript">
$(document).ready(function () {

    $('#reportContainer').load('Reports/Scaffold.html', function () {
        var dataSource = new kendo.data.DataSource({
            transport: {
                read: {
                    type: "POST",
                    url: Reports.ServiceURL.MyService,
                    dataType: "JSON",
                    contentType: "application/json",
                    data: { myParam: "1" },
                    serverPaging: true,
                    serverSorting: true
                },

                parameterMap: function (data, operation) {
                    return kendo.stringify(data);
                }
            },

            batch: true,
            pageSize: 50,
            schema: {
                data: "d"
            }
        });

        $("#allGrids").kendoGrid({
            dataSource: dataSource,
            sortable: true,
            pageable: true,
            filterable: false,
            height: 400,
            columns: myModel
        });
    });
});
</script>

最佳答案

似乎您想要选择serverPaging但是您将其放置在错误的位置。它是 DataSource 的字段,而不是 transport.read 的字段。您应该将其定义为:

var dataSource = new kendo.data.DataSource({
    transport    : {
        read        : {
            type       : "POST",
            url        : Reports.ServiceURL.MyService,
            dataType   : "JSON",
            contentType: "application/json",
            data       : { myParam: "1" }
        },
        parameterMap: function (data, operation) {
            return kendo.stringify(data);
        }
    },
    serverPaging : true,
    serverSorting: true,
    batch        : true,
    pageSize     : 50,
    schema       : {
        data: "d"
    }
});

注意:不要忘记,当您定义schema.data时,您还需要定义记录总数,如果它来自您可能的服务器有类似的东西:

schema       : {
    data: "d",
    total: "total"
}

服务器应该返回一些如下所示的 JSON:

{
    "d": [
        ...
    ],
    "total": 100
}

其中 100 是服务器中的记录总数,而不是 d 中的记录数。

如果不是serverPaging,您可能会这样做:

schema   : {
    data: "d",
    total: function(data) { return data.d.length; }
}

@BurkeHolland,如果您想知道发生的情况是网格实际上没有执行serverPaging并且可能没有接收total或者无法计算它。它既不在 serverPaging 模式下,也不在 serverSorting 模式下,因此当 @SkildLobster 单击标题时,它会对结果进行排序(也许它们已经排序),然后计算最终能够计算页面的网格数据长度的记录总数。

关于jquery - 在对列进行排序之前,Kendo 网格最初不会分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14203300/

相关文章:

Jquery验证触发但不阻止表单提交

javascript - 响应式 Highchart 图例位置

javascript - 在 jQuery/JS 中使用数组定位重复类中的特定元素

javascript - 使用 jQuery 延迟 .net 文件上传?

kendo-ui - 在过滤过程中显示弹出 View

jquery - 带有 jQ​​uery UI 可排序的自定义助手

c# - ASP.Net MVC 路由 URL 生成

ASP.NET MVC 5 Identity 2 基于用户角色的登录重定向

javascript - 如何更新/刷新剑道多选模板?

javascript - Kendo Pager(可分页)显示 'No items to display',即使记录在那里