禁用所选jqGrid行的子网格扩展

时间:2010-05-27 20:08:53

标签: jquery jqgrid javascript subgrid

问题:jqGrid有子网格。我想为主网格的某些行禁用展开/折叠功能。

4 个答案:

答案 0 :(得分:5)

我实际上找到了一种方法:

grid.jqGrid('setGridParam',{
                afterInsertRow: function(rowid, aData, rowelem) {

                    var rowData = grid.getRowData(rowid);
                    if(**Condition**){
                        $('tr#'+rowid, grid)
                         .children("td.sgcollapsed")
                         .html("")
                         .removeClass('ui-sgcollapsed sgcollapsed');
                    }
                }
            });

有一点问题。代码@Frank删除了图标,但仍然触发了“点击”事件。尝试取消绑定“点击”事件似乎不起作用,可能是因为它稍后附加(可能在 gridComplete 上)。无论如何,我认为click事件是使用'ui-sgcollapsed sgcollapsed'类之一附加的,所以如果删除它们,则不会附加事件。

希望它有所帮助。

答案 1 :(得分:2)

将其添加到gridConfig

afterInsertRow: function(rowid, aData, rowelem) {
    // Remove the subgrid plus button except for rows that have exceptions
    if (CONDITION) {
        $('#' + rowid).children("td.sgcollapsed").unbind().html("");
    }
},

答案 2 :(得分:0)

不幸的是,没有jqGrid API。您必须等到网格创建,然后,可能从loadComplete事件,您需要手动循环所有行并禁用所选行。

如果检查组成网格的DOM元素,您可能想出一种方法来删除/禁用所选行的扩展器。也许使用jQuery.remove

答案 3 :(得分:0)

如果您尝试禁用或隐藏子网格展开和折叠按钮,请在loadcomplete上使用此功能,

jQuery("#GridTeableID").jqGrid('hideCol', "subgrid");