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

Jquery 如何在查询字符串中使用OData强制jqgrid查询数据,jquery,rest,jqgrid,odata,free-jqgrid,Jquery,Rest,Jqgrid,Odata,Free Jqgrid,免费jqgrid使用 $.jgrid.useJSON = true; $.extend(true, $.jgrid.defaults, { mtype: 'GET', url: '@Html.Raw(Url.Action("Entity", "API",))' } ); 搜索窗口是使用 $.extend(true, $.jgrid.search, { multipleSearch: true,

免费jqgrid使用

  $.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格式生成的筛选器子句?
我读过jqgrid OData plugin wiki文章,但还没有发现这种可能性。

我不能向您推荐一个现成的解决方案,但我为您指明了实现需求的方向


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

我不能向您建议一个现成的解决方案,但我为您指明了实现需求的方向


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

看起来jqgrid OData插件
parseFilterGroup
已经完成了OData过滤器的创建。由于此插件不支持中的文件上载,因此无法使用其数据编辑方法。如何使用OData插件仅使用OData搜索过滤器检索json数据?@Andrus:好的,我看到
prepareExpression
parseFilterGroup
已经实现了
$filter
的设置。对不起,我不明白上传文件与搜索参数之间的关系是什么?插件还强制OData进行编辑和删除。例如,行覆盖现有的编辑url。我可以修改插件源代码并注释掉这些地方,这是最好的解决方案。或者如果
edittype:“file”
,如何允许插件从表单编辑上传文件?在这个OData中,也可以使用插件的编辑和插入。@安德鲁斯:你知道URI的OData标准吗(请参阅)?它需要指定的id不是
/id
,而是
(id)
。因此,插件会按照要求生成用于编辑/删除操作的正确URL。对
edittype:“文件”
的支持超出插件的范围。您可以在OData插件开头的注释中看到的电子邮件和的GitHub帐户。由于不支持文件输入,应使用非OData URL编辑和插入WebAPI。插件的那些部分需要注释掉。OData格式发送每行的属性名称。本机jagrid json格式只接收数组中的值。使用OData会使数据变得更大,解析速度可能会更慢。看起来jqgrid OData插件
parseFilterGroup
已经完成了OData过滤器的创建。由于此插件不支持中的文件上载,因此无法使用其数据编辑方法。如何使用OData插件仅使用OData搜索过滤器检索json数据?@Andrus:好的,我看到
prepareExpression
parseFilterGroup
已经实现了
$filter
的设置。对不起,我不明白上传文件与搜索参数之间的关系是什么?插件还强制OData进行编辑和删除。例如,行覆盖现有的编辑url。我可以修改插件源代码并注释掉这些地方,这是最好的解决方案。或者如果
edittype:“file”
,如何允许插件从表单编辑上传文件?在这个OData中,也可以使用插件的编辑和插入。@安德鲁斯:你知道URI的OData标准吗(请参阅)?它需要指定的id不是
/id
,而是
(id)
。因此,插件会按照要求生成用于编辑/删除操作的正确URL。对
edittype:“文件”
的支持超出插件的范围。您可以在OData插件开头的注释中看到的电子邮件和的GitHub帐户。由于不支持文件输入,应使用非OData URL编辑和插入WebAPI。插件的那些部分需要注释掉。OData格式发送每行的属性名称。本机jagrid json格式只接收数组中的值。使用OData会使数据变得更大,解析速度可能会更慢。