0

以下代码构建我的剑道数据源:

 var dataSource = new kendo.data.DataSource({
                serverPaging: true,
                schema: {
                    data: "ListMediaSummary",
                    total: "RowCount",
                },
                transport: {
                    read: {
                        url: gAppBaseURL + "UniversalSearch/SearchData?searchText=" + searchText + "&pageNumber=" + page,
                        type: "POST",
                        dataType: "json",
                    }
                },
                parameterMap: function (data, type) {
                    if (type == "read") {
                        return {
                            $top: data.take,
                            $skip: data.skip
                        }
                    }
                },
                page: 1,
                pageSize: 25,
            });

从这里我将参数“searchText”和“PageNumber”从 transport.read 方法传递到我的 asp.net 控制器中的 Action 方法,然后将搜索结果呈现到 kendo listView 中。action 方法获得了“searchText”值,但它却获得了 pageNumber?尽管在帖子中它确实传递了页码(在萤火虫中检查),但我想要将页码传递给我函数中的 transport.read 方法。我怎么能做到这一点?

4

1 回答 1

0

要启用服务器分页,您应该将数据源配置为启用serverPaging。然后数据源将数据项分页实现留给远程服务。默认情况下,数据源在客户端执行分页。

<script>
var dataSource = new kendo.data.DataSource({
  transport: {
    /* transport configuration */
  },
  serverPaging: true,
  schema: {
    total: "total" // total is returned in the "total" field of the response
  }
});
</script>

如果将 serverPaging 设置为 true,请不要忘记设置 schema.total。

当启用服务器分页时,以下选项将发送到服务器:

  • page - 要返回的数据项的页面(1 表示第一页)
  • pageSize - 要返回的项目数
  • skip - 要跳过多少数据项
  • take - 要返回的数据项数(与 pageSize 相同)

因此,您应该将控制器操作方法更改为以下内容:

public ActionResult GetData(int page, int pageSize, int skip, int take){
    // do some magic operation
}
于 2015-05-15T07:12:00.230 回答