对于我的子网格,我已将行数固定为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个已过滤行的结果快照:
现在,如果我在搜索字段中按Backspace以获取更多行,则似乎搜索不会触发,因为Firebug不会显示任何请求跟踪:
如果我删除添加的&#39; setGridHeight&#39; gridcomplete中的行,都运行良好! 我认为在我的编码和理解jqGrid如何运行时,我错了一次。 请有人能给我一些解决这个问题的方法吗? 提前谢谢了。祝你今天愉快。 JiheL
答案 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
属性,但在当前代码中不需要它。