【问题标题】:jqGrid search options for NOT value非值的 jqGrid 搜索选项
【发布时间】:2016-12-01 05:05:32
【问题描述】:

我目前已经定义了这个 jqGrid 列搜索选项;

colDefs.Append(",stype: 'select', searchoptions: { sopt: ['eq', 'ne'], value: ':All;99:Yes;1:No'}");

因此,它正确过滤为搜索选项“是”的值 99 和值 1 的“否”。

我怎样才能让它过滤到 99 以外的任何东西(即 NOT 99)来表示“否”而不是 1?

我尝试了一些猜测,例如 ...;!99:No'}" 但它们只是错误。

用户不能或不需要在等于/不等于或任何其他过滤选项之间进行选择。他们只能从三个固定选项中进行选择,“全部”、“是”或“否”。

目前“全部”显示所有记录,“是”仅显示值为“99”的记录(数据为字符串),“否”仅显示值为“1”的记录。

我的目标“全部”应显示所有记录,“是”应仅显示值为“99”的记录,“否”应显示值不是“99”的所有记录. 我可以定义“搜索选项”来执行此操作吗?

单元格数据类型是字符串。

FilterToolbar 由

定义
   $('#' + this.instance + '_GridContainer_grid').jqGrid('filterToolbar', {
    stringResult: true,
    defaultSearch: 'cn'
});

过滤是本地的,而不是服务器的。

谢谢!

【问题讨论】:

  • 对不起,但绝对不清楚你在做什么。语句colDefs.Append(...) 可能错误或正确取决于上下文。 jqGrid 是纯 JavaScript 产品。您应该包含 JavaScript 代码以防止误解。你写“我让它过滤”。你是什​​么意思?您是使用搜索对话框、过滤器工具栏还是直接在postData 中设置过滤器?你用的是哪个datatype?你过滤本地还是在服务器上?您使用哪个版本的 jqGrid 以及来自哪个分支的 jqGrid(免费 jqGrid、商业 Guriddo jqGrid JS 或版本
  • colDefs 代码正确;这来自具有许多工作网格的实时系统。很抱歉过滤器混乱;在此系统中,搜索选项定义了列过滤,因此(在这种情况下)标题行下方的第一行中有一个“全部,是,否”下拉菜单。从下拉列表中选择会根据 searchoptions 代码中定义的搜索条件过滤结果。我继承了这个,所以不要开枪!我希望对“sopt”的工作原理以及(我认为)如何为列定义单独的“ne”和“eq”规则有所了解。版本是 4.6.0。
  • 您使用哪个datatype?您是在本地过滤还是在服务器上过滤? 如果您不发布相应的 JavaScript 代码,则很难关注您。我试着简短地解释一下。看来您使用filterToolbar 方法创建the filter toolbar您使用filterToolbar 的哪些选项? 例如searchOperators: true 选项允许用户选择过滤操作(不等于)。您是否需要通过您的程序设置过滤器,或者用户应该可以选择ne 操作?
  • 我已经更新了问题。非常感谢您的帮助 Oleg。
  • 我仍然无法关注你。如果您不使用searchOperators: true,则过滤器工具栏将永远不会使用来自soptsecond 操作(将始终应用first 操作)。如果您想应用'ne' 而不是'eq' 如果用户在该列的过滤器工具栏中选择某个选项,那么您应该使用sopt: ['ne']sopt: ['ne', 'eq'] 而不是sopt: ['eq', 'ne']

标签: c# .net jqgrid


【解决方案1】:

如果您使用filterToolbar 没有 searchOperators: true 选项,则将使用来自sopt第一个搜索操作。您可以将sopt: ['eq', 'ne'] 更改为sopt: ['ne']sopt: ['ne', 'eq'] 以在列中应用“不等于”操作。

这样设置的原因如下。 searchoptions 将被过滤器工具栏和搜索对话框使用(参见herehere)。如果列中不存在searchoptions.sopt,则对所有列应用搜索操作defaultSearch(用作filterToolbar 的选项)。如果您将 select 与值 1,2,...11,12,13,... 一起使用,那么搜索值 '1' 将显示值为 1,11,12,13,...的行,因为所有值包含子字符串'1'。因此,如果使用stype: 'select',通常总是定义searchoptions.sopt

【讨论】:

  • 我想我现在了解如何定义 sopt ['eq'] 以匹配特定的 [value]。但是在同一个 filterToolbar 下拉列表中,我想要一个选项来过滤“除 [value] 之外的所有内容”。这是否可能,也许使用与 searchOperators 完全不同的机制?
  • @AnotherFineMess:我不明白这个问题。试试{ sopt: ['ne', 'eq'], value: ':All;99:not 99;1:Not 1'}"。您可以通过升级到 free jqGrid 4.13.4(我开发的 jqGrid 的分支)来实现任何自定义操作。请参阅the wiki articlethe answerthis onethis onethis one
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 2018-08-23
  • 2014-11-14
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 2014-03-12
相关资源
最近更新 更多