有没有一种方法可以禁用预先搜索特定字段的搜索,同时仍然允许它们在 JqGrid 的 filterToolbar 中可用

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 在网格和子网格的所有字段中搜索过滤数据作为网格,除了 日期字段 我无法使用日期范围选择器(迄今为止仍在努力)。同时,我想使用高级搜索只搜索日期字段。

有什么方法或设置我还不能发现我可以从高级搜索中禁用特定 columns/fields 而不从 filterToolbar 中禁用它们?

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

是的,您可以使用 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 用于分配 rowid。我在 tax 列中包含 属性 search: false 以默认将其从 searching/filtering 中排除。此外,我将 additionalProperties 定义为

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

它允许按 属性 id 排序和搜索。 additionalProperties 的项目可以是以下两种形式之一:像 "id" 这样的字符串或像 colModel 这样具有相同格式的对象。 additionalProperties 选项在使用 loadonce: true 选项时非常实用。它允许在本地数据中包含来自输​​入数据(来自服务器的数据return)的任何附加属性。属性的值可以具有 任何类型 。例如,您可以 return 为服务器提供任何辅助数据,例如子网格数据、组合键的值等。使用 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 项当前将使用的属性是:namelabelstypesearchoptionssorttype. formatterformatoptions 仅在 sorttype: "date"sorttype: "datetime"formatter: "date" 的情况下使用。在这种情况下 srcformatformatoptionsnewformat 将在 searching/filtering 期间使用。因为我们没有在 columns 中包含日期列,所以 columns 中不需要 formatterformatoptions

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