【问题标题】:Disable edit(add, edit and delete) buttons of jqgrid instead of hiding(default behaviour)禁用 jqgrid 的编辑(添加、编辑和删除)按钮而不是隐藏(默认行为)
【发布时间】:2018-01-30 12:08:04
【问题描述】:

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

在这里,我想禁用这些按钮而不是隐藏。任何人都可以帮助解决这个问题。我的意思是,想把默认的隐藏功能改成禁用。

提前致谢。

【问题讨论】:

    标签: javascript jquery jqgrid


    【解决方案1】:
    • 如果您想显示它但处于禁用状态,那么您应该使用。
    $("#edit_pays_grid").addClass('ui-state-disabled');
    

    Fiddle Demo link

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

    .navGrid('#pays_grid_pager', { 编辑:假,添加:假,德尔:假, 搜索:假,刷新:真})

    Fiddle Demo link

    【讨论】:

      【解决方案2】:

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

      首先,了解导航栏所有按钮的 ID 很重要,您需要禁用这些按钮。 id 构建的规则可能会有所不同,具体取决于您使用(可以使用)的 jqGrid 版本以及 jqGrid 的分支(free jqGrid、商业Guriddo jqGrid JS 或版本 free jqGrid,如果您没有任何特殊限制,我建议您使用它。顶部和底部寻呼机的 id 不同(请参阅 jqGrid 的 pagertoppager 选项)。您可以只使用开发者工具来检查您需要禁用的按钮的 ID。

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

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

      (参见ui.jqgrid.css的代码the lines)。如果您想在不同的设备上支持几乎所有的网络浏览器(参见here),pointer-events: none 的使用就很重要。

      【讨论】:

      • 感谢您的回复,这里我只关注添加、编辑和删除按钮(jqGrid 的默认编辑按钮)。将 {refresh: true, edit: false, add: false, del: false, search: true} 传递给 navGrid,它使三个按钮不可见/隐藏。在这里,我希望它们可见但处于禁用模式。
      • @santoshM:不客气!请仔细阅读我的回答。了解您使用的 jqGrid 版本以及 jqGrid 的哪个分支非常重要。您使用哪个寻呼机(toppagerpager 或两者)?您是否尝试过 the old answer 中的 the demo,我引用了它? “添加”按钮应始终启用,但只有在选择了某行且该行可编辑时才应启用“编辑”和“删除”。
      • 通过我的修复,如果我将 {refresh: true, edit: false, add: false, del: false, search: true} 传递给 navGrid,按钮应该被禁用而不是隐藏。跨度>
      • @santoshM:对不起,你读过我在之前的 cmets 中的问题吗?你试过旧的演示吗?它禁用导航栏中的按钮,如果该行是可编辑的(没有not-editable-row 类),则在选择行时启用该按钮。
      • @santoshM:如果您使用例如del:false,则删除按钮将完全不会创建。很明显,您不应该使用del:false,而是在navGrid 创建后直接禁用Delete 按钮。您还需要使用beforeSelectRow 回调或jqGridBeforeSelectRow 事件在选择行时重置按钮的状态(启用或禁用),并在重新加载网格时重置状态(例如在loadComplete 内部)。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-15
        • 2011-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多