【发布时间】: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,则过滤器工具栏将永远不会使用来自sopt的second 操作(将始终应用first 操作)。如果您想应用'ne'而不是'eq'如果用户在该列的过滤器工具栏中选择某个选项,那么您应该使用sopt: ['ne']或sopt: ['ne', 'eq']而不是sopt: ['eq', 'ne']