隐藏展开/折叠符号或停用规范。 jqGrid子网格中的行

时间:2010-12-26 13:42:01

标签: jqgrid subgrid

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

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

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

1 个答案:

答案 0 :(得分:14)

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

我建议您清除包含'subgrid'列并解除loadComplete事件句柄内单元格的'click'事件:

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

您将获得以下结果: alt text (您可以看到相应的示例实时here)。重要的是要理解,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内部

(参见实时here)。如果您需要为id不等于rowid的所有行停用子网格,您可以进行如下操作

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

(见实时here

更新free jqGrid现在具有the answerhasSubgrid回调中描述的新功能,可以在subGridOptions中指定。它允许通知jqGrid哪些行不应该有子网格。