使用Kendo-Angular指令
<div kendo-grid k-data-source="MySource"
k-filterable="true" k-pageable="true"></div>
将kendo数据源作为我的范围的一部分
$scope.MySource = new kendo.data.DataSource({
transport:{
read : {
url:"/MyUrl"
}
},
schema:{
data: "data"
total:function(response){return response.total},
model:{
fields:{
LastName:{type:"string"}
}
}
},
pageSize: 10,
serverFiltering: true,
serverPaging:true
})
数据加载正常(虽然我有一个字符串问题,它没有分页传递第四页,可能与后端更相关而不是这个。
我正在做的就是调用一个asp.net控制器路由来返回数据,正如我所提到的那样,分页似乎工作正常但是当我尝试使用过滤时,'get'查询字符串看起来有点像这样。
/MyUrl?take=10&skip=0&page=1&pageSize=10&filter%5Bfilters%5D%5B0%5Bfield%5D=LastName&filter%5Bfilters%5D.........value%5D=Smith
我的控制器看起来像这样
public JsonResult MyUrl(int pageSize = 10, int skip = 10, string sort = "", string filter="")
{
// return jsonresult
}
该网址发生了什么,我的控制器是否设置正确?我是否需要为默认的kendo网格设置参数图?
答案 0 :(得分:0)
这是默认参数映射正在执行的操作 - 将当前数据源状态传递给jQuery。您可以将状态作为JSON传递:
transport:{
read : {
url:"/MyUrl",
type: "POST",
contentType: "application/json"
},
parameterMap: function(options) {
return JSON.stringify(options);
}
},
答案 1 :(得分:0)
创建一个这样的类
public class PagingOption
{
public PagingOption()
{
PageSizes = new List<int>();`enter code here`
}
/// <summary>
/// Specifies the current page number.
/// </summary>`enter code here`
public int take { get; set; }
/// <summary>
/// Specifies the number of items to show in a page.
/// </summary>
public int skip { get; set; }
public int page { get; set; }
public int pagesize { get; set; }
public List<SortDescription> sort { get; set; }
/// <summary>
/// Specifies different page sizes.
/// </summary>
public IList<int> PageSizes { get; set; }
}
public class SortDescription
{
public string field { get; set; }
public string dir { get; set; }
}
并将其作为参数传递给服务器端的Web调用
public JsonResult MyUrl(PagingOption pagingoption)
{
// return jsonresult
}
它会将查询参数转换为分页选项类