kendo网格以角度排序数据源查询字符串

时间:2014-02-23 20:49:31

标签: angularjs kendo-ui kendo-grid kendo-datasource

使用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网格设置参数图?

2 个答案:

答案 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
}

它会将查询参数转换为分页选项类