如何在创建新行时删除 jqgrid 子网格扩展按钮

How to remove jqgrid sub-grid expansion button while creating new row

我正在使用带有子网格的 jQrid 版本 3.8.1。在我的例子中,用户在输入新行时能够扩展子网格并没有多大意义。由于父行尚不存在,因此无论如何子网格都不会显示任何内容。那么仅针对正在创建的行禁用或删除子网格扩展按钮(+ 按钮)的最佳方法是什么?

我看到了 this post,它可以工作,但看起来有点老套。有没有更受支持的方法?

我不确定我是否正确理解了您的场景。我假设您添加了该行,然后想在对新添加的行进行内联编辑时隐藏“+”按钮。

具体的实施取决于您添加行的方式以及您使用的内联编辑形式。无论如何,我建议您 隐藏 在内联编辑开始时的“+”按钮,并在行可能有子网格信息之后显示它。您可以使用以下代码隐藏“+”图标

$("#" + rowid).find("td.ui-sgcollapsed>a").hide();

此外,如果用户确实单击了 "subgrid" 单元格(其中包含隐藏的“+”),您将不得不阻止扩展子网格。您可以通过删除 sgcollapsed class(或 sgexpanded class)来执行此操作:

$("#" + rowid).find("td.ui-sgcollapsed").removeClass("sgcollapsed");

要恢复原始状态(保存编辑行后),您需要显示图标 ($("#" + rowid).find("td.ui-sgcollapsed>a").show()) 并将 class sgcollapsed 添加回 <td> 元素 ($("#" + rowid).find("td.ui-sgcollapsed").addClass("sgcollapsed")).

如果您确定某些行没有任何 sbgrid,那么您可以通过将空字符串或 &nbsp; 设置为 td.ui-sgcollapsed 的 HTML 内容来删除“+”图标行的调用。此外,还可以解除 click 事件与单元格的绑定。请参阅 the old answer 以获取相应的代码示例。