我有一个带有子网格的JQGrid(简单的一个,而不是网格),直到昨天才工作得很好。然后我发现了强大的标志loadonce=true,它可以免费为我提供分页、搜索等功能。但是因为我已经启用负载一旦子网格停止工作,当我点击加号扩展一行加载框出现,不会消失。如果我删除loadonce=true一切工作如预期。这是我的javascript,提前感谢。
$("#testsTable").jqGrid({
mtype: "POST",
url: "GetCurrentStatusServlet",
datatype: "xml",
colNames:['Suite', 'Test Case', 'Last Update', 'Status','Actions'],
colModel:[
{name:'suite',index:'suite', width:50, sorttype:"int"},
{name:'name',index:'name', width:300, formatter:nameFmatter},
{name:'lastupdate',index:'lastupdate', width:150, formatter:"date"},
{name:'status',index:'status', width:50, formatter: fmt_status,align:"center"},
{name:'act',index:'act', width:100, align:"left"}
],
rowNum:150,
width:1200,
height:800,
rowList:[150,300,500],
pager: $('#pager1'),
viewrecords: true,
multiselect: true,
caption: buildName,
sortorder: "asc",
sortname: "suite",
subGrid: true,
subGridUrl : "GetCurrentSubGridStatusServlet",
subGridType: "xml",
subGridModel: [ {
name: ['Test Method', 'Last Update', 'Status'],
width : [250, 200, 100],
params: ['name']
}],
loadonce: true,
gridComplete: function(){
var ids = $("#testsTable").jqGrid('getDataIDs');
for(var i=0;i < ids.length;i++){
var cl = ids[i];
var test = new Array();
test.push($("#testsTable").getCell(cl, 'name'));
run = "<button class="runBtn" onclick="runTests('"+test+"')">Run</>";
log = "<button class="logBtn" onclick=";">Log</>";
$("#testsTable").jqGrid('setRowData',ids[i],{act:run+log});
}
setupButtons();
}
});
$("#testsTable").jqGrid('navGrid','#pager1',{add:false,edit:false,del:false});
经过一些调试,我发现你的错误很容易:在你的网格中你使用
subGridType: "xml"
代替正确的
subgridtype: "xml"
(请参阅文档)。因此,在当前的网格中,未知参数subGridType
将被忽略,而datatype
的值将被使用。在loadonce:true
被使用的情况下,datatype
的值在第一次网格加载后变为local
。
另外,我建议你使用不显眼的JavaScript来使'click'绑定。如果您在网格中有许多行,则当前的实现非常慢。