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

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

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

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’类之一附加的,所以如果删除它们,则不会附加事件。

希望能帮助到你。

将其添加到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(""); } }, 

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

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

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

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