7

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

4

4 回答 4

6

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

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上)。无论如何,我认为单击事件是使用“ui-sgcollapsed sgcollapsed”类之一附加的,因此如果删除它们,则不会附加该事件。

希望能帮助到你。

于 2011-09-15T09:31:06.170 回答
3

将此添加到 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("");
    }
},
于 2010-06-22T19:34:00.847 回答
1

如果您尝试禁用或隐藏子网格展开和折叠按钮,请在加载完成时使用此按钮,

jQuery("#GridTeableID").jqGrid('hideCol', "subgrid");
于 2013-11-19T05:20:07.470 回答
0

不幸的是,没有用于此的 jqGrid API。您将不得不等到创建网格,然后,也许从loadComplete事件中,您将需要手动循环所有行并禁用选定的行。

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

于 2010-05-27T21:23:36.323 回答