Asp.net web api 剑道网格显示所有记录,即使页面大小已定义

Asp.net web api 剑道网格显示所有记录,即使页面大小已定义,asp.net-web-api,kendo-ui,grid,Asp.net Web Api,Kendo Ui,Grid,我是剑道UI的新手,我正在尝试用Webapi实现剑道网格,下面的代码是分页不起任何作用的。 API telerik提供的Odata服务也同样适用。好吧,几个月前我写了一篇博文-。这将解决您的查询。这篇文章的重点是向WebAPI发送正确的参数。我展示了一个示例网格和数据源代码,以及发送到WebAPI的请求和响应对象。如果你需要任何解释,请告诉我 编辑:张贴在这里,因为只有链接是不感激的 网格 下面是一个剑道UI网格声明,我们将为其实现服务器端操作 $("#sampleGrid").kendoGri

我是剑道UI的新手,我正在尝试用Webapi实现剑道网格,下面的代码是分页不起任何作用的。 API


telerik提供的Odata服务也同样适用。

好吧,几个月前我写了一篇博文-。这将解决您的查询。这篇文章的重点是向WebAPI发送正确的参数。我展示了一个示例网格和数据源代码,以及发送到WebAPI的请求和响应对象。如果你需要任何解释,请告诉我

编辑:张贴在这里,因为只有链接是不感激的

网格

下面是一个剑道UI网格声明,我们将为其实现服务器端操作

$("#sampleGrid").kendoGrid({
    columns: [
        { field: "ID", title: "ID", width: 50 },
        { field: "Label", title: "Label", template: "<span class='k-link bold' title='${Description}'>${Label}</span>" },
        { field: "Description", title: "Description" }
    ],
    dataBound: function () { this.element.find('tbody tr:first').addClass('k-state-selected') },
    pageable: {
        refresh: true,
        pageSizes: [10, 15, 20, 25]
    },
    resizable: true,
    reorderable: true,
    filterable: true,
    groupable: true,
    selectable: true,
    sortable: true
});
parameter map属性允许我们将一组默认参数与自定义参数一起发送回服务器。默认参数包括“take”、“skip”、“sort”和“filter”,分别对应于页面大小、要跳过的记录量、排序条件和筛选条件数组。由于可能还需要发送其他参数,因此会在具有其他值的模型中设置默认参数值。Kendo.stringify应用于模型并作为完整的请求对象返回

数据和总数

数据源模式包含两个属性;“数据”和“总数”。其中每一个都是响应对象中的属性名称,我们希望在其中得到结果。我已将“sampleDTOList”指定给“data”属性,因为我的响应对象将包含该名称下的记录列表。类似地,我已将“totalItems”指定给“total”属性。“total”属性接受所有记录计数的数值,而不管当前页面上返回了多少记录。这样,数据源就知道实际有多少条记录以及要显示多少页

注:此处不探讨该模型,仅作为任何可使用模型的占位符引用

请求

请求对象包含确切的属性,作为数据源设置为发送到服务器的默认参数和自定义参数

public class FilterDTO
{
    public int Take { get; set; }
    public int Skip { get; set; }
    public List<SortCriteria> Sort { get; set; }
    public List<FilterCriteria> Filter { get; set; }

    public string ID { get; set; }
}

public class SortCriteria
{
    public string field { get; set; }
    public string dir { get; set; }
}

public class FilterCriteria
{
    public string field { get; set; }
    public string operator { get; set; }
    public string value { get; set; }
}
页码

因为我们从应用程序的客户端接收“take”和“skip”,所以根据给定的信息计算所需的页码很容易。当我们知道要跳过的记录的页面大小和数量时,我们可以通过应用以下规则获得页码:

pageNo = (skip + take) / take
回应

响应对象包含前面提到的数据源所需的两个属性;一个用于模式的“data”属性,另一个用于模式的“total”属性

public class SampleResponse : BaseResponse
{
    private List<SampleItems> SampleDTOList;
    public List<SampleItems> sampleDTOList
    {
        get { return SampleDTOList; }
        set { SampleDTOList = value; }
    }
    public int totalItems { get; set; }
}
公共类SampleResponse:BaseResponse
{
私有列表样本集成商;
公共列表样本集成商
{
获取{return SampleDTOList;}
设置{SampleDTOList=value;}
}
公共整数totalItems{get;set;}
}

如果您查看从客户端发送的API调用,它是否在查询中包含skip和take的参数?可能不相关,但
键入:“json”
在数据源配置中不正确且不必要。此外,您没有在数据源中定义
模式
,也没有在服务器响应中返回客户总数。如果网格不知道列表中总共有多少项,它将不知道有多少页的数据。请不要只发布链接答案。这里不需要投票,链接是我自己的内容,而不是在互联网上随机发现的东西。。一个简单的请求,把答案材料放在这里,而不是仅仅张贴链接,就足够了,现在你有了一个真正好的答案。顺便说一句,不是我否决了你。相反,我将对此进行投票。嗨,Musub,parameterMap parameterMap:function(options){model.Take=options.Take;model.Skip=options.Skip;model.Sort=options.Sort;model.Filter=options.Filter;return kendo.stringify(model);}另外,如果我想要一个类型get方法呢
public class FilterDTO
{
    public int Take { get; set; }
    public int Skip { get; set; }
    public List<SortCriteria> Sort { get; set; }
    public List<FilterCriteria> Filter { get; set; }

    public string ID { get; set; }
}

public class SortCriteria
{
    public string field { get; set; }
    public string dir { get; set; }
}

public class FilterCriteria
{
    public string field { get; set; }
    public string operator { get; set; }
    public string value { get; set; }
}
[HttpPost]
[ActionName("GetItems")]
public SampleResponse GetItems(FilterDTO filterDTO)
{
    //Calling a different layer for the read operation based in the parameter values
    return BusinessLayer.GetItems(filterDTO);
}
pageNo = (skip + take) / take
public class SampleResponse : BaseResponse
{
    private List<SampleItems> SampleDTOList;
    public List<SampleItems> sampleDTOList
    {
        get { return SampleDTOList; }
        set { SampleDTOList = value; }
    }
    public int totalItems { get; set; }
}