网格大小调整后jqGrid filtertoolbar没有触发

时间:2013-04-18 07:27:56

标签: search jqgrid filter height

对于我的子网格,我已将行数固定为10,但如果reccount小于10,我希望将高度子网格调整为" auto"或" 100%"。

所以这是我的子网格代码:

//  SUBGRID FOURTH LEVEL
var subgrid_table_id = subgrid_id+"_d",
    pager_id = "p_"+subgrid_table_id; 
$("#"+subgrid_id).append("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>"); 
$("#"+subgrid_table_id).jqGrid({ 
    url:"sg31b.php?id="+row_id+"&clt="+clt, 
    datatype: "json", 
    idPrefix:"sgd_",
    colNames: ['Id','Article','Désignation','Marque','Equivalence'],
    colModel: [ 
        {name:'e.id',index:'e.id',hidden:true}, 
        {name:'a.code',index:'a.code', width:100}, 
        {name:'a.descr',index:'a.descr', width:450}, 
        {name:'k.code',index:'k.code', width:80}, 
        {name:'e.equiv',index:'e.equiv',width:100}
    ], 
    pager: pager_id, 
    sortname: 'a.code', 
    hiddengrid:true,
    scroll:true,
    height:230,
    rowNum:10,
    autowidth:true,
    caption:'4 - EQUIVALENCE ARTICLES',
    gridComplete:function(){
        sortDataCol(this);
        if($("#"+subgrid_id+"_d").jqGrid('getGridParam','records') < $("#"+subgrid_id+"_d").jqGrid('getGridParam','rowNum')){
            $("#"+subgrid_id+"_d").jqGrid('setGridHeight','100%');
        }else{
            $("#"+subgrid_id+"_d").jqGrid('setGridParam',[{npage:1}]).jqGrid('setGridHeight',230);
        }
    }
}); 
$("#"+subgrid_table_id).jqGrid('navGrid',"#"+pager_id,{search:false,add:false,edit:false,del:false});
$("#"+subgrid_table_id).jqGrid('filterToolbar',{stringResult: true,searchOnEnter : false});
fullInputCss();

以及少于10个已过滤行的结果快照: enter image description here

现在,如果我在搜索字段中按Backspace以获取更多行,则似乎搜索不会触发,因为Firebug不会显示任何请求跟踪: enter image description here

如果我删除添加的&#39; setGridHeight&#39; gridcomplete中的行,都运行良好! 我认为在我的编码和理解jqGrid如何运行时,我错了一次。 请有人能给我一些解决这个问题的方法吗? 提前谢谢了。祝你今天愉快。 JiheL

1 个答案:

答案 0 :(得分:2)

我认为问题的根源可能是您网页上的 id duplicates 。刚才我在另一个问题上写了the answer,在那里我详细描述了问题。

jqGrid(版本4.4.5)的当前实现在filterToolbar的代码中存在问题,该代码根据以下规则为过滤器工具栏的输入字段构造id

id =“gs_”+ cm.name

(参见the line代码)。这意味着对于您使用的每个子网格,列a.code的输入字段的ID将为gs_a.code 。所以你可以有id重复。

所以我建议你在代码中重新设计命名概念。你可以使用例如

name: row_id + "a_code", index: "a.code"

在排序网格时,仍然会发送"a.code"之类的值,但您将没有重复ID。在某些情况下(您在repeatitems: false中使用jsonReader),您可能需要使用其他jsonmap属性,但在当前代码中不需要它。