jqgrid过滤器在加载时删除一行

时间:2011-10-05 15:54:50

标签: jquery jqgrid filter

我使用jqgrid构建了一个网格,并启用了过滤功能。检索的数据类型是json,我正在使用loadonce功能。当我应用一些过滤器时,它似乎总是隐藏在记录上。我正在使用网格寻呼机只是为了拥有我想在网格上添加的额外按钮,我正在删除gridpager按钮(下一个,最后一个等等)。我删除了寻呼机,看看是否有任何冲突,但我仍然得到同样的错误。当网格加载时我得到'View 1 - 7 of 7'并且我可以看到7条记录,当我应用过滤器时,输出是'View 1 - 3 of 4'。这意味着4条记录与过滤器匹配,但它只保持显示3.现在,如果我清除过滤器,我得到“查看1 - 6的7”,再次丢失一条记录。我用firebug检查了表,看看记录是否隐藏但仍然没有。我尝试了firefox,chrome,IE,在所有浏览器中我都得到了同样的错误。 jqgrid版本是4.1.1。任何线索为什么会发生这种情况?

您可以在下面看到代码:

jq($grid).jqGrid({
    url: $url,
    datatype: 'json',
    mtype: 'Get',
    colNames: colNamesList,
    colModel: $colModel,
    jsonReader : {
        repeatitems:false,
        id: "id",
    },
    rowNum: -1, 
    width: jq(document).width()-20,
    height: 200,
    pager: $pagerId,
    viewrecords: true,
    fixed: true,
    shrinkToFit: false,
    loadonce: true, 
    caption: $caption,
    beforeRequest: function(){
        if (!initialized) {
            jq(blockElement).block({ message: '<h1 class="loadingMsg">Grid is loading, please wait...</h1>' });
        }
    },
    loadComplete: function(data){
        if (loadCompleteCallback != null){
            loadCompleteCallback(data);
        }

        if (!initialized) {
            jq.jGrowl('"' + $caption + '" Grid loaded.', {header:'Load Notification'});
            jq(blockElement).unblock();
            initialized = true;
        }
    }
});

        if (!initialized) {
            jq.jGrowl('"' + $caption + '" Grid loaded.', {header:'Load Notification'});
            jq(blockElement).unblock();
            initialized = true;
        }
    }
});

jq($grid).jqGrid('filterToolbar',{
    stringResult: true,
    searchOnEnter : false
});

提前致谢!

1 个答案:

答案 0 :(得分:5)

我不明白以下内容:为什么你从服务器返回一个你不想要显示的行?删除服务器端已有的数据是不是更容易?如果不可能,您可以删除loadComplete内的行。顺便说一句,在当前的代码中我看不到你在哪里设置自定义过滤器,这使得网格的一行不可见。

还有一句话:你永远不应该使用rowNum: -1。只允许正值(如rowNum: 10000)。如果您使用loadonce: true在第一次填充网格后将datatype改为'local',这一点尤其重要。不允许使用否定rowNum