Kendo Ui Grid和Spring Data Rest服务器端排序;分页

时间:2015-01-26 01:49:52

标签: kendo-ui kendo-grid spring-data-rest

如此艰难的时刻,我想要一个比我更好的解决方案,并且能够为那些可能有帮助的人发布答案。

问题: 使用KendoUI JSP Grid。目标添加服务器端分页和排序 我需要能够得到如下的GET请求:

Spring Data Rest预期的URL

http://localhost:8080/api/accounts?page=1&size=20&sort=firstName,desc -> or asc

URL默认来自KendoUI

http://localhost:8080/api/accounts?take=20&skip=0&page=1&pageSize=20&sort%5B0%5D%5Bfield%5D=firstName&sort%5B0%5D%5Bdir%5D=asc

这适用于Spring Data Rest项目的服务器端排序。目前,排序部分显示为数组。你如何改变排序网址的形成方式?

1 个答案:

答案 0 :(得分:0)

经过Google的大量编码后,我们提出了这个解决方案。如果不正确,请纠正我。

在KendoUI Grid中,您可以通过parameterMap修改网址。下面是如何将KendoUI URL格式化为Spring Data Rest期望的内容。

<script>
    function parameterMap(data, operation) {
        if (operation == "read") {
            if (data.sort && data.sort.length > 0) {
                var p = {};
                if(!data.sort && data.sort.length < 0) {
                    p = data.page(1);
                } else {
                    p = data.page
                }
                var values = {};
                values["page"] =  p;
                values["size"] = data.pageSize;
                values["sort"] = data.sort[0]['field'] + ',' + data.sort[0]['dir'];
                return values;
            } else {
                var values = {};
                values["page"] = data.page;
                values["size"] = data.pageSize;
                return values;
            }
        }
    }
</script>

else部分将确保分页仍然有效。在排序部分中设置values["page"] = p;可确保在排序时将您带到排序的第一页。

我仍然遇到的问题是,如果您加载页面然后导航到页面然后点击排序它会将您带到排序数据的第1页。如果您现在导航到已排序数据集中的另一个页面,然后选择再次排序,则不会将您转到第一个新排序页面。