我正在使用 kendo ui grid 进行服务器端分页、过滤和排序。使用 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。任何人都可以帮助我剑道网格如何生成具有所有这些参数的查询字符串。所以也许我可以重复使用相同的功能
http://localhost:3306/api/test/62ca5945e15b0cb85bec257eec8f0bf1/grid ?filter=stepType~eq~%27Rejected%27&sort=&aggregate=&pageSize=10&page=2&isFirstLoad=false&showColumns=name%2CtotalScore%2Crank%2CexpirationDate%2CstepName%2C&_=1450310137369
任何人都可以帮助我在哪里可以找到一个函数来生成所有查询参数以及我从网格检索的过滤器、分页和排序值。
最佳答案
我之前已经使用 Angular 使用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、排序和过滤。 API 应该接收该数据并基于该数据返回数据。
初始调用将调用相同的 api,其中 pageNumber 为 1,pageSize 为默认 pageSize,排序为 null,并且不会进行过滤。
对api的调用是post方式,所以url中不会有任何参数。
关于javascript - kendo ui网格查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34324670/