我正在使用kendo ui网格与服务器端分页,过滤和排序。使用C#WebAPI,其中所有网格参数(如过滤器,排序和当前页面以及页面大小)都通过kendo grid API在URL中发送,我在WebAPI中有DataSourceRequest,它可以读取所有查询参数并在我返回数据时应用它们来自API。
我有一个特定的情况。我有一个导出链接,我需要使用$ http服务来调用我使用的相同API,所有过滤器和排序应用于网格,并返回所有记录。
我拥有网格的所有属性,例如过滤器和排序。
我可以从kendogrid的数据源
访问 var query = {
page: 1,
pageSize: grid.dataSource.total(),
sort: grid.dataSource.sort(),
filter: grid.dataSource.filter()
}
我需要通过应用所有过滤器和排序来调用我用于渲染kendogrid的相同API。可以任何人帮助我如何kendo网格生成所有这些参数的查询字符串。所以我可以重复使用相同的功能
http://localhost:3306/api/test/62ca5945e15b0cb85bec257eec8f0bf1/grid 过滤器=步骤类型〜当量〜%27Rejected%27&安培;排序=安培;骨料=安培;的pageSize = 10&安培;页= 2及isFirstLoad =假安培; showColumns =名称%2CtotalScore%2Crank %2CexpirationDate%2CstepName%2C&安培; _ = 1450310137369
任何人都可以帮助我在哪里可以找到一个函数来生成我从网格中检索到的过滤器,分页和排序值的所有查询参数。
答案 0 :(得分:2)
我以前使用angularMap使用parameterMap实现了这个,但我想在使用jQuery时会非常相似。请参阅此url。
使用parameterMap
的代码片段$scope.pageableData = new kendo.data.DataSource({
type: "aspnetmvc-ajax",
pageSize: $scope.pageSize,
serverPaging: true,
serverFiltering: true,
serverSorting: true,
transport: {
read: {
url: $rootScope.projectURL + '/api/DocLibItems/PageableGridItems',
dataType: 'json',
type: 'post'
},
parameterMap: function (data, type) {
$scope.pageableGridCreateCache = false;
var filter = data.filter === undefined ? null : data.filter;
if (filter) {
angular.forEach(filter.filters, function (item) {
item._operator = item.operator;
});
}
return {
ProjectID: $scope.projectID,
PageNumber: data.page,
PageSize: data.pageSize,
Sorting: data.sort === undefined ? null : data.sort,
Filtering: filter
};
}
}
});
ParmeterMap返回ProjectID,PageNumber,PageSize,Sorting和Filtering。 api应该期望接收数据并基于此返回数据。
初始调用将调用相同的api,其中pageNumber为1,pageSize将是默认的pageSize,排序将为null,并且不会进行过滤。
对api的调用是一个帖子,所以网址中没有任何参数。