禁用 jqgrid 的编辑(添加、编辑和删除)按钮而不是隐藏(默认行为)

Disable edit(add, edit and delete) buttons of jqgrid instead of hiding(default behaviour)

Jqgrid 默认情况下使用值为 false 的适当属性隐藏添加、编辑和删除按钮。 (例如:导航网格或其他方式中的{add: false, edit: false, del: false})。

在这里,我想禁用这些按钮而不是隐藏它们。任何人都可以帮忙吗?我的意思是,想把默认的隐藏功能改成禁用。

提前致谢。

The old answer 描述了如何实现您需要的行为。

首先,了解导航栏所有按钮的 ID 很重要,您需要禁用这些按钮。 id 构建的规则可能会有所不同,具体取决于您使用(可以使用)的 jqGrid 版本和 jqGrid 的分支(free jqGrid, commercial Guriddo jqGrid JS or an old jqGrid in version <=4.7). I develop free jqGrid,如果您不这样做,我建议您使用它没有任何特殊限制。顶部和底部分页器的 ID 不同(请参阅 jqGrid 的 pagertoppager 选项)。您可以使用开发人员工具检查您需要的按钮的 ID禁用。

了解这一点很重要,您应该在每 selection/deselection 行之后更新导航器按钮的状态 (disable/enable)。因此,您应该使用 beforeSelectRow 回调或 jqGridBeforeSelectRow 事件。要在使用 jQuery UI CSS 时禁用按钮,您应该将 CSS classes ui-state-disabledui-jqgrid-disablePointerEvents 添加到按钮并启用,您应该删除 classes。如果您使用 Bootstrap CSS 而不是 jQuery UI CSS,那么您应该使用 "disabled ui-jqgrid-disablePointerEvents" 而不是 "ui-state-disabled ui-jqgrid-disablePointerEvents"。 class ui-jqgrid-disablePointerEvents 在免费 jqGrid 的 ui.jqgrid.css (ui.jqgrid.min.css) 中定义。如果您不使用免费的 jqGrid,那么您应该按以下方式定义它:

.ui-jqgrid-disablePointerEvents {
    pointer-events: none;
}

(参见 the lines of the code of ui.jqgrid.css). The usage of pointer-events: none is important if you want to support mostly all web browsers (see here)在不同的设备上。

当您将 {add:false, del:false} 传递给 navButtonAdd() 时,添加和删除按钮根本不会添加到网格中。要首先禁用它们,我们需要通过不将错误值传递给 add 和 del 来添加它们。添加它们后我们可以禁用它们添加 class 'ui-state-disabled'.

  • 如果你想显示它但处于禁用状态,那么你应该使用。
$("#edit_pays_grid").addClass('ui-state-disabled');

Fiddle Demo link

  • 或者,您也可以使用下面的代码,它根本不会将按钮添加到网格中。

.navGrid('#pays_grid_pager', { edit: false, add: false, del: false, search: false, refresh: true})

Fiddle Demo link