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

How to force jqgrid to query data using OData in query string

免费的 jqgrid 使用

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

搜索 window 是使用

定义的
$.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 格式生成的过滤器子句? 我阅读了 jqgrid OData 插件维基文章,但还没有发现这种可能性。

我无法向您推荐现成的解决方案,但我为您指明了实现需求的方向。

首先,我建议您阅读 the answer? It shows how to use server side sorting and paging of OData. One need to use $top, $skip, $orderby and $inlinecount URI parameters which can be set inside of serializeGridData. One can implement filtering in the same way. One need to convert filters parameter, created by jqGrid, to the object and parse all the rules. One need generate the corresponding $filter parameter, which support OData (like here and here)。重要的是要了解通用实现并不那么容易,它可能取决于您使用的 OData 实现的确切版本。