【问题标题】:kendo ui grid query parameterskendo ui网格查询参数
【发布时间】:2016-03-23 08:03:45
【问题描述】:

我正在使用带有服务器端分页、过滤和排序的 kendo ui 网格。使用 C# WebAPI,其中所有网格参数(例如过滤器、排序和当前页面以及页面大小)都由 kendo 网格 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 p>

谁能帮我在哪里可以找到一个函数来使用我从网格中检索到的过滤器、分页和排序值生成所有查询参数。

【问题讨论】:

    标签: javascript angularjs asp.net-web-api kendo-grid kendo-datasource


    【解决方案1】:

    我之前使用 angular 使用 parameterMap 实现了这一点,但我想它在仅使用 jQuery 时会非常相似。看到这个url

    我使用 parameterMap 的代码的 sn-p

    $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的调用是post,所以url中不会有任何参数。

    【讨论】:

    • 非常感谢。没想到转换参数这么简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    相关资源
    最近更新 更多