3

ここでも、列ヘッダーをクリックして並べ替えるまでページングは​​機能しません。その後、ページングは​​正常に機能しているようです。

<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>
4

2 に答える 2

5

選択したいようですが、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はサーバー内の1つまたは複数のレコードの総数であり、のレコード数ではありませんd

そうでない serverPaging場合は、単に次のようにすることができます。

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

@ BurkeHolland、何が起こっているのかを知りたい場合は、グリッドが実際には機能しておらず、グリッドをserverPaging受信してtotal​​いないか、計算できない可能性があります。モードでもserverPagingモードでもなかったserverSortingため、@ SkildLobsterがタイトルをクリックすると、結果が並べ替えられ(おそらく、すでに並べ替えられている可能性があります)、グリッドデータの長さからレコードの総数が計算され、最終的にページを計算できるようになりました。 。

于 2013-01-07T22:38:36.323 に答える
0

MVC Kendoグリッドの場合、スキーマを追加する明確な方法がわかりませんでした。次のようにロードした後にグリッドをソートすることで問題を解決しました。グリッドに、データバインドされたイベントを追加しました。

@(Html.Kendo().Grid<tpnconnect.com.Models.Tools.NonWorkingDay>()
            .Name("Holiday_Grid")
            .Events(e => e
                .DataBound("sortHolidayGridByDate")
            )

JavaScript変数を使用して、イベントが複数回トリガーされないようにしました。

<script>
    var firstBind = true;

    function sortHolidayGridByDate() {
        if (firstBind == true) {
            firstBind = false;
            var grid = $("#Holiday_Grid").data("kendoGrid");
            var dsSort = [];
            dsSort.push({ field: "NonWorkingDate", dir: "desc" });
            grid.dataSource.sort(dsSort);
        }
    }
</script>
于 2016-01-28T12:29:29.217 に答える