【问题标题】:JQGrid searchrules and toolbar filtering errorJQGrid 搜索规则和工具栏过滤错误
【发布时间】:2012-01-25 15:27:50
【问题描述】:

我设置了一个可在我的 JQGrid 上工作的工具栏过滤器。我们最近有一个要求,只允许整数进入这个字段。我更改了相应列的 colModel 以便在搜索发生之前验证客户端。对 javascript 进行更改后,行为没有改变。无论输入如何,验证似乎都不会发生在客户端,这使我相信我对搜索规则有误解。代码如下

上一页

colModel:[ ...,
                      {name:'version', search:true, stype:'text'}
,...,]

发布更改

colModel:[ ...,
                      {name:'version', search:true, stype:'text',searchrules:{required:true, integer:true}}
,...,]

搜索规则是否不适用于工具栏过滤?文档表明他们会这样做,除非我在某处遗漏了一行。

感谢收看!

【问题讨论】:

    标签: jqgrid filtering


    【解决方案1】:

    searchrules 将仅在搜索对话框中使用,而不在搜索过滤器中使用。作为用于验证数据的解决方法beforeSearch 回调函数。你可以分析this.p.postData。如果搜索数据错误,您应该显示错误对话框,执行任何其他操作,例如使用错误数据将“ui-state-error”或“ui-state-error-text”添加到输入并返回trueReturningtruevalue from thebeforeSearch` 处理程序将阻止应用搜索请求。

    【讨论】:

    • 我想我现在可以正常工作了。只需要显示相应的错误消息即可。谢谢!
    • 无论是否触发了搜索,是否都会调用 afterSearch?据我所知,它确实可以,但我可能做错了什么。
    • @Joseph:从the lines可以看出,jqGrid的当前代码调用afterSearch独立于beforeSearch返回的值。
    • 无论如何,如果过滤失败,我有一个更好的解决方案来显示和删除任何警告文本。如果有时间,我会在今天晚些时候更新我的解决方案。
    • 我在使用 before search 选项,但我在 'this' 对象中获取了整个表,你能建议一种方法来验证我的数据类型是本地的吗,jQuery("#grid1").jqGrid('filterToolbar', { stringResult: true, searchOnEnter: false, beforeSearch:function(data){console.log(this,data)}}).trigger("reloadGrid")@Oleg