【问题标题】:Is there a way to disable search of specific fields in advance search while still allowing their availability in the filterToolbar in JqGrid有没有办法在提前搜索时禁用特定字段的搜索,同时仍然允许它们在 JqGrid 的 filterToolbar 中可用
【发布时间】:2016-01-29 16:50:47
【问题描述】:

我正在使用免费的 jqGrid。在其中,我使用 filterToolbar 搜索网格和子网格的所有字段中的过滤数据作为网格,除了 日期字段 我无法使用日期范围选择器(迄今为止仍在努力)。同时,我想使用高级搜索仅搜索日期字段。

有没有一种方法或设置,我还没有发现我可以从高级搜索中禁用特定列/字段而不从 filterToolbar 中禁用它们?

(不知道这是否重要 - 但是一旦数据命中,所有的排序/过滤和分页都在客户端完成......loadonce:true。)

【问题讨论】:

    标签: jquery jqgrid free-jqgrid


    【解决方案1】:

    是的,您可以使用columns 搜索选项进行自定义,这通常是来自colModel 的元素(列)的副本。使用columns 选项一可以更改列的顺序。一种可以包含具有search: false 属性的列,也可以包含additionalProperties 中的任何属性,可以用作隐藏列的替换。

    我准备了the demo,它演示了实现。该演示使用的输入数据看起来像

    { id: "50",  invdate: "2015-10-31", name: "test5",  note: "note5",
      amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }
    

    我用列定义了colModel,这些列对应于所有输入属性,但id 用于分配rowids 除外。我在tax 列中包含了属性search: false,默认情况下将其排除在搜索/过滤之外。另外我将additionalProperties定义为

    additionalProperties: [
        { name: "id", sorttype: "integer" }
    ]
    

    它允许按属性id 进行排序和搜索。 additionalProperties 的项目可以是以下两种形式中的一种:像 "id" 这样的字符串或像 colModel 这样具有相同格式的对象。在使用loadonce: true 选项的情况下,选项additionalProperties 非常实用。它允许在本地数据中包含来自输​​入数据(从服务器返回的数据)的任何附加属性。属性的值可以有任何类型。例如,您可以向服务器返回任何帮助数据,如子网格数据、组合键的值等。在使用additionalProperties: ["id"] 或以上值additionalProperties: [ { name: "id", sorttype: "integer" }] 之后,我们将能够按id 排序(按使用sortname: "id")或按id 搜索。

    为了自定义搜索对话框,我使用了搜索选项

    columns: [
        { name: "closed", label: "Closed",
            stype: "select", searchoptions: { sopt: ["eq", "ne"], value: ":Any;true:Yes;false:No" } },
        { name: "id", label: "Id", sorttype: "integer",
            searchoptions: { sopt: ["eq", "ne", "lt", "le", "gt", "ge"] }},
        { name: "name", label: "Client name",
            searchoptions: { sopt: ["cn", "bw", "ew", "eq", "bn", "nc", "en"] } },
        { name: "amount", label: "Amount", sorttype: "integer",
            searchoptions: { sopt: ["eq", "ne", "lt", "le", "gt", "ge"] } },
        { name: "tax", formatter: "integer", sorttype: "integer",
            searchoptions: { sopt: ["eq", "ne", "lt", "le", "gt", "ge"] } },
        { name: "ship_via", label: "Shipped via",
            stype: "select", searchoptions: { sopt: ["eq", "ne"], value: ":Any;FE:FedEx;TN:TNT;IN:IN" } },
        { name: "note" }
    ]
    

    其中包括来自colModel 的一些列。我设置label 来指定搜索字段的自定义名称。您可以看到列invdate 未包括在内,但不可搜索列tax 和附加属性id 包括在内。

    当前将在columns 项目中使用的属性是:namelabelstypesearchoptionssorttypeformatterformatoptions 将仅在 sorttype: "date"sorttype: "datetime"formatter: "date" 的情况下使用。在formatoptionssrcformatnewformat 的情况下,将在搜索/过滤期间使用。因为我们没有在columns 中包含日期列,所以columns 中不需要formatterformatoptions

    您可以测试演示以查看搜索对话框是否按预期工作。搜索对话框如下图所示

    【讨论】:

    • 这就像一个魅力!没有使用附加属性。完美的奥列格,谢谢!
    • @gal66stang:我根据之前的经验介绍了additionalProperties。我建议你看看这种可能性。最简单的用法非常简单:使用附加信息扩展任何数据项,并在additionalProperties 数组中包含属性名称。之后,属性将保存在本地。可以在自定义格式化程序cellattrrowattr 和网格的data 参数中访问。您使用.getLocalRow(rowid) 通过rowid 从本地data 获取数据项。该项目将包含所有列数据和additionalProperties
    • 它在应用程序中似乎非常有用和强大。我肯定会合并它。看起来它绝对可以满足我目前的要求。非常感谢您为此应用程序所做的所有工作以及对本网站和其他网站的反馈。它对我学习网格很有帮助。
    • @gal66stang:不客气!很高兴能帮到你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2013-07-27
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多