【问题标题】:How to pass page number to kendo datasource, so it could load data of page 2?如何将页码传递给剑道数据源,以便加载第 2 页的数据?
【发布时间】:2015-05-14 15:00:28
【问题描述】:

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

 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 方法。我怎样才能做到这一点?

【问题讨论】:

  • 您的操作方法是如何定义的,那里的参数是否以相同的方式命名,即 pageNumber ?
  • 其定义如下: public ActionResult Method(string searchTerm, int pageNumber = 1){ }
  • 你是否用 HttpPost 修饰了 action 方法,并尝试将数据类型从 int 更改为 string
  • 你在用剃须刀吗?

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


【解决方案1】:

要启用服务器分页,您应该配置数据源以启用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 - 要返回的数据项数(与 页面大小)

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

public ActionResult GetData(int page, int pageSize, int skip, int take){
    // do some magic operation
}

【讨论】:

  • 谢谢,这对我理解有很大帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多