带有布尔数据的选择框的jqgrid列过滤器

时间:2016-05-19 19:56:37

标签: search filter jqgrid

(仅供参考,我使用jqGrid 5。)

我的问题是关于jqGrid中的列过滤器。我有一个字段从服务器返回作为布尔值," true"或"假"。我可能有把它改成0/1的奢侈品,但我真的不想,如果我可以避免它。所以,它看起来像这样:

{"rows":[{"rowID":47568,"field1":"some text here","isOpen":true} ...]}

在我的jqGrid中,我正在使用" beforeProcessing"函数显示布尔值除了" true"或" false":

beforeProcessing: function(data) {
    for(var i=0, len=data.rows.length; i< len; i++) {
       data.rows[i].isOpenModified = openFormatter(data.rows[i].isOpen);
    }
...

function openFormatter(isOpen) {
    return isOpen ? '' : 'CLOSED';
}

如果isOpen为true,则会产生将单元格留空的效果,并显示“已关闭”#39;如果它是假的。到目前为止一切都很好。

我遇到的问题是工具栏过滤器字段的选择字段。这是jqGrid列模型:

    colModel: [
                { name: 'field1', label: 'Stuff', width: 100},
                { name: 'isOpenModified', index:'isOpen', label: 'CLOSED',
                   searchoptions: { sopt:['eq'], value: ':All;" ":Open;"CLOSED":CLOSED'}, stype: 'select'},
            ],

这正确显示&#34; CLOSED&#34;的选择框。字段,但选择除&#34; All&#34;之外的任何内容。没有任何表现。

我确实尝试将isOpenModified更改为0和1,然后筛选器选择框工作,但当然我无法提供。我的要求是显示空(isOpen == true)或&#34; CLOSED&#34; (ISOPEN == FALSE)。

我觉得解决方案可能涉及列模型的名称和索引字段,但我无法确定我做错了什么。我很感激你的时间....

1 个答案:

答案 0 :(得分:0)

我发现了原始问题的解决方案,但它提出了另一个问题。

需要修改搜索选项以使其正常工作:

{ name: 'isOpenModified', label: 'CLOSED',
                   searchoptions: { sopt:['eq'], value: ':All; :Open;CLOSED:CLOSED'}, stype: 'select'} 

请注意,引号将从空格周围和CLOSED附近删除。

我还更改了format方法以返回空格而不是空字符串:

return isOpen ? ' ' : 'CLOSED';

这导致另一个问题:现在&#34;打开&#34;默认情况下选择选项(但它未被未清项目过滤)。我试图通过颠倒顺序来解决这个问题:

{ name: 'isOpenModified', label: 'CLOSED',
                   searchoptions: { sopt:['eq'], value: ' :Open;:All;CLOSED:CLOSED'}, stype: 'select'} 

这就像#34; All&#34;默认情况下已选中,但在列表中排名第二。我正在等待'#34; style&#34;伙计们要合适。有什么建议吗?