【问题标题】:How to force jqgrid to query data using OData in query string如何强制 jqgrid 在查询字符串中使用 OData 查询数据
【发布时间】:2015-11-28 21:56:10
【问题描述】:

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

【问题讨论】:

    标签: jquery rest jqgrid odata free-jqgrid


    【解决方案1】:

    我不能向您推荐一个现成的解决方案,但我会为您指明如何实现该要求的方向。

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

    【讨论】:

    • 看起来 jqgrid OData 插件parseFilterGroup 已经阻碍了 OData 过滤器的创建。由于此插件不支持文件上传,因此无法使用其数据编辑方法。如何使用 OData 插件仅使用 OData 搜索过滤器检索 json 数据?
    • @Andrus:好的,我看到prepareExpressionparseFilterGroup 已经实现了$filter 的设置。抱歉,我不明白哪个关系有文件上传到搜索参数?
    • 插件也强制 OData 进行编辑和删除。例如,github.com/free-jqgrid/jqGrid/blob/master/plugins/… 行会覆盖现有的编辑 url。我可以修改插件源代码并注释掉那些地方,这是最好的解决方案。或者如果edittype: 'file',如何允许插件从表单编辑中上传文件?在这个 OData 中也可以使用插件编辑和插入。
    • @Andrus:你知道 URI 的 OData 标准吗(参见 here)?它需要指定 id 不是/id,而是(id)。因此,插件遵循要求并为编辑/删除操作生成正确的 URL。对edittype: 'file' 的支持超出了插件的范围。可以在OData插件开头的评论中看到Mark Babayev的邮箱和GitHub账号。
    • 由于不支持文件输入,非 OData url 应该用于编辑和插入 WebAPI。插件的那些部分需要注释掉。 OData 格式发送每一行的属性名称。本机 jagrid json 格式仅接收 values 数组。使用 OData 会使数据大小变得更大,解析可能会更慢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 2019-03-23
    • 1970-01-01
    相关资源
    最近更新 更多