【问题标题】:prevent jqGrid onSelectRow from being called for particular cell - jqGrid v4.4.4防止为特定单元格调用 jqGrid onSelectRow - jqGrid v4.4.4
【发布时间】:2017-08-24 12:30:10
【问题描述】:

在我的 jqGrid 中,我实现了 onSelectRowonCellSelect 事件。 onCellSelect 仅适用于一个特定的单元格。当我首先单击该单元格时,onCellSelect 事件触发,然后是onSelectRow。但我只想为该单元格触发 onCellSelect 事件。对于网格中的其他单元格,它很好。我解决这个问题的方法是调用beforeSelectRow 事件。如果我找到单元格,然后将我的 javascript 变量设置为 false。然后在onSelectRow 中检查该值是否为真,然后执行onSelectRow 中的语句,否则忽略它们。

beforeSelectRow: function (rowid, e) {
                    var $self = $(this),
                    iCol = $.jgrid.getCellIndex($(e.target).closest("td")[0]),
                    cm = $self.jqGrid("getGridParam", "colModel");
                    if (cm[iCol].name === "Activate/Deactivate") {
                        selectRow = false;
                    }
                    else {
                        selectRow = true;
                    }
                    return true;
                },                                              
onCellSelect: function (rowid, iCol, cellcontent, e) {
                    var row = $(this).getRowData(rowid);
                    if (iCol == 7) {
                        //some code statements here
                        });
                    }
                }, 
onSelectRow: function (id) {
                    if (selectRow) {
                       //some code statements here
                    }
                },

还有其他更好的方法吗? (selectRow是jqGrid外部的变量)

【问题讨论】:

  • 请描述使用的 jqGrid 版本 - Guriddo jqGrid、free-jqGrid 还是 jqGrid 版本
  • 请在每个关于 jqGrid 的问题的文本中包含您使用(可以使用)的 jqGrid version 以及 fork (@ 987654321@、商业版 Guriddo jqGrid JS 或版本 beforeSelectRow 代码使用return true; 而不是return selectRow;selectRow 可能是局部变量)。此外,我认为没有任何理由将您的代码分成 3 个回调。您可以将所有代码放在beforeSelectRow中。
  • @Tony 我在我的 ASP.NET MVC 应用程序中使用 jQuery.jqGrid (by Trirand) nuget 包。 (nuget.org/packages/jQuery.jqGrid/4.4.4)
  • @Oleg 我在我的 ASP.NET MVC 应用程序中使用 jQuery.jqGrid(由 Trirand 提供)nuget 包。 (nuget.org/packages/jQuery.jqGrid/4.4.4)
  • @NoahSunil:jqGrid 4.4.4 是复古版本,发布时间为 4.5 年前,已经死了很多年。目前有两个主要的分支:free jqGrid,我开发,也可以作为NuGet package 使用,以及商业Guriddo jqGrid JS,开发 Tony Tomov。我建议您从产品升级到最新版本。

标签: jquery jqgrid


【解决方案1】:

基本上如果使用Guriddo jqGrid,beforeSelectRow中的代码可以移动到onSelectRow中,因为这个方法也有事件参数。

有一种更简单的方法来检测所选单元格的名称。

试试这个

onCellSelect: function (rowid, iCol, cellcontent, e) {
....
}, 
onSelectRow: function (id, status, e) {
    var name = $(e.target).closest("td").attr('aria-describedby'); 
    name = name.split(this.p.id+"_");
    name = name[1];
    if (name === "Activate/Deactivate") {
       //some code statements here
    }
},

【讨论】:

  • 仅供参考,以上代码适用于 jqGrid 4.4.4 版。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 1970-01-01
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多