如何强制jqgrid使用查询字符串中的OData查询数据
免费的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 });
如果按下搜索按钮,则会创建丑陋的filter查询字符串参数
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文章,但还没有找到这种可能性。
我不能建议您准备好使用解决方案,但我指出了如何实现该要求的方向。
首先,我建议你阅读答案 ? 它显示了如何使用OData的服务器端排序和分页。 需要使用$top
, $skip
, $orderby
和$inlinecount
URI参数,这些参数可以在serializeGridData
设置。 可以以相同的方式实现过滤。 需要将由jqGrid创建的filters
参数转换为对象并解析所有规则。 需要生成相应的$filter
参数,它支持OData(就像这里和这里一样 )。 重要的是要理解通用实现并不那么容易,它可能取决于您使用的OData实现的确切版本。