如何强制jqgrid使用查询字符串中的OData查询数据

时间:2015-11-28 21:56:10

标签: jquery rest jqgrid odata free-jqgrid

Free jqgrid使用

读取远程json数据
  $.jgrid.useJSON = true;
  $.extend(true, $.jgrid.defaults, {
            mtype: 'GET',
            url: '@Html.Raw(Url.Action("Entity", "API",))'
    } );

使用

定义搜索窗口
$.extend(true, $.jgrid.search, {
            multipleSearch: true,
            recreateFilter: true,
            closeAfterSearch: true,
            overlay: 0,
            recreateForm: true
        });

如果按下搜索按钮,则会创建丑陋的过滤器查询字符串参数,如

http://localhost:52216/admin/API/Entity/DoklstlG?search=true&nd=1448746804617&rows=20&page=1&sidx=customer&_sord=desc&filters=%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22Klient_nimi%22%2C%22op%22%3A%22cn%22%2C%22data%22%3A%22a%22%7D%5D%7D

如何更改此url,尤其是以OData格式生成的filters子句? 我阅读了jqgrid OData插件wiki文章,但还没有找到这种可能性。

1 个答案:

答案 0 :(得分:0)

我不能建议你准备好使用解决方案,但我指出了如何实现这一要求的方向。

首先,我建议您阅读the answer?它显示了如何使用OData的服务器端排序和分页。需要使用$top$skip$orderby$inlinecount URI参数,这些参数可以在serializeGridData内设置。可以以相同的方式实现过滤。需要将由jqGrid创建的filters参数转换为对象并解析所有规则。需要生成相应的$filter参数,该参数支持OData(如herehere)。重要的是要理解通用实现并不那么容易,它可能取决于您使用的OData实现的确切版本。