0

我将子网格的行号固定为 10,但如果记录小于 10,我想将高度子网格调整为“自动”或“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 个过滤行的结果快照: 在此处输入图像描述

现在,如果我在搜索字段中按 Backspace 以获得更多行,似乎搜索不会触发,因为 Firebug 没有显示任何请求跟踪: 在此处输入图像描述

如果我在 gridcomplete 中删除添加的“setGridHeight”行,一切正常!我认为我在编码和理解 jqGrid 的运行方式方面又犯了一次错误。请问有人可以给我一些解决这个问题的方法吗?提前谢谢了。祝你今天过得愉快。继和

4

1 回答 1

2

我想问题的根源可能是您页面上的id 重复。刚才我在另一个你的问题上写了答案,我详细描述了这个问题。

jqGrid(4.4.5 版)的当前实现在基于以下规则的过滤器工具栏的输入字段的filterToolbar构造代码中存在问题:id

id="gs_" + cm.name

(见代码)。这意味着该列的输入字段的 ida.codegs_a.code 适用于您使用的每个子网格。所以你可以有 id 重复。

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

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

在网格排序期间仍会发送值 like 的方式"a.code",但您将没有 id 重复项。在某些情况下(您是否使用repeatitems: falsein jsonReader)您可能需要使用附加jsonmap属性,但在当前代码中不需要它。

于 2013-04-18T08:38:54.493 回答