我使用jqGrid创建了一个包含多个子网格级别的网格,并在answer的帮助下提供了一些帮助。这是我目前的情况:
我试图修改它,只显示子网格,如果有数据要显示。换句话说,如果是count > 0
。逻辑上我试图添加一个条件(下面的伪代码,基于前面提到的答案):
原始代码
var gridParams = {
datatype: 'local',
data: myGridData,
colNames: ['Column 1', 'Column 2'],
colModel: [
{ name: 'col1', width: 200 },
{ name: 'col2', width: 200 }
],
...
subGrid: true,
subGridRowExpanded: function (subgridDivId, rowId) {
var subgridTableId = subgridDivId + "_t";
$("#" + subgridDivId).html("<table id='" + subgridTableId + "'></table>");
$("#" + subgridTableId).jqGrid({
datatype: 'local',
data: mySubgrids[rowId],
colNames: ['Col 1', 'Col 2', 'Col 3'],
colModel: [
{ name: 'c1', width: 100 },
{ name: 'c2', width: 100 },
{ name: 'c3', width: 100 }
],
...
});
}
}
$("#grid").jqGrid(gridParams);
调整后的代码
var gridParams = {
datatype: 'local',
data: myGridData,
colNames: ['Column 1', 'Column 2'],
colModel: [
{ name: 'col1', width: 200 },
{ name: 'col2', width: 200 }
],
...
}
// Condition added HERE
if (count > 0)
{
gridParams.subGrid = true;
gridParams.subGridRowExpanded = function (subgridDivId, rowId) {
var subgridTableId = subgridDivId + "_t";
$("#" + subgridDivId).html("<table id='" + subgridTableId + "'></table>");
$("#" + subgridTableId).jqGrid({
datatype: 'local',
data: mySubgrids[rowId],
colNames: ['Col 1', 'Col 2', 'Col 3'],
colModel: [
{ name: 'c1', width: 100 },
{ name: 'c2', width: 100 },
{ name: 'c3', width: 100 }
],
...
});
}
}
$("#grid").jqGrid(gridParams);
但这只是悲惨地失败了:
这根本不受支持,或者我做错了什么?
答案 0 :(得分:2)
如果我正确理解了您的问题,那么您要删除子网格中没有元素的行的“+”(展开子网格)图标。在这种情况下,您可以遵循the old answer中描述的旧技巧。您可以添加loadComplete
句柄,该句柄会从具有subGrid: true
选项的网格中删除一些“+”图标。您只需知道网格中没有子网格的所有行的rowid,并为行
$("#" + rowid + ">td.sgcollapsed").unbind("click").html("");
更新:我发布了free jqGrid的修改版,允许在没有上述黑客攻击的情况下轻松实现要求。
The demo演示了这项新功能。实施非常简单。它包含hasSubgrid
内的subGridOptions
回调。回调具有options
,该对象具有属性rowid
,data
和两个不太重要的属性iRow
和iCol
。演示代码使用options.data
代表行的数据。仅当输入行的tax
高出20时,该演示才会创建子网格。
subGridOptions: {
hasSubgrid: function (options) {
return parseFloat(options.data.tax) > 20;
}
}
如果我正确理解输入数据的格式,您可以在案例中使用mySubgrids[options.data.rowid].length
。