5

我有一个带有子网格的网格:只有主网格的第一行需要有一个子网格。

我通过 Google 和http://www.trirand.com/....i:subgrid&s[]=hidecol找到的解决方案 不起作用。

是否有快速而肮脏(硬编码)的解决方案?

4

1 回答 1

14

使用删除完整列隐藏“子网格”列jQuery("#grid_id").hideCol('subgrid');,可用于展开或折叠子网格,因此您不能在您的情况下使用该方式。

我建议您清除包含“子网格”列并取消绑定loadComplete事件句柄内单元格的“单击”事件:

loadComplete: function() {
    $("td.sgcollapsed:not(:first)","#list").unbind('click').html('');
}

您将得到以下结果:( 您可以在此处替代文字 查看相应的示例)。重要的是要理解loadComplete事件将在任何页面上调用,因此在第二页上,您也只会在第一行上拥有 subrgid。

如果您需要在选择需要具有子网格的行时实现更复杂的逻辑,您可以使用以下代码

loadComplete: function() {
    var grid = $("#list");
    var subGridCells = $("td.sgcollapsed",grid[0]);
    $.each(subGridCells,function(i,value){
        if (i!==0) {
            $(value).unbind('click').html('');
        }
    });
}

上面的代码与语句相同$("td.sgcollapsed:not(:first)","#list").unbind('click').html(''),但您可以轻松修改最后一个版本的代码以实现更复杂的行为。

更新:如果您只需要对由您标识的某些行使用有损子网格,则rowid可以使用

$("#"+rowid+" td.sgcollapsed",grid[0]).unbind('click').html('');

(看住这里)里面的loadComplete。如果您需要为所有 id 不等于的行停用子网格,rowid您可以进行如下操作

$('td.sgcollapsed:not("#'+rowid+' td.sgcollapsed")',grid[0]).unbind('click').html('');

(见现场直播

更新:免费 jqGrid现在答案中描述的新功能:hasSubgrid回调可以在subGridOptions. 它允许通知 jqGrid 哪些行不应该有子网格。

于 2010-12-27T12:33:56.413 回答