我的代码-

 onCellSelect: function(rowid,iRow,iCol,e)
  {
        jQuery("#createrule").click(function(){
        hidePopup();
        showPopUp6();
      });
   onCellSelect:

},

jqGrid中onCellSelect函数的确切含义是什么?

最佳答案

如果用户单击网格,则不应每次都注册新的click事件处理程序。

jqGrid在创建网格期间将click事件处理程序注册为一个。因此,在用户单击网格的某个单元格的情况下,您可以执行一些操作。参数rowidiCol可帮助您确定单击了哪个单元格,并且如果需要,e参数(click事件的Event对象)可以为您提供更多信息。 jqGrid是开源项目。因此,您可以随时检查源代码,以更好地了解onCellSelect的功能以及在哪种上下文中调用它。查看the lines代码。

只是一个示例,您可以定义以下格式化程序

formatter: function (cellValue, options, rowObject) {
    return "<span class='myLink'>" + cellValue + "</span>";
}

在名称为“myColumn”的列中,并定义以下使用myLink类的CSS规则

.myLink { text-decoration: underline; cursor: pointer; }

您将在该列中具有“链接”。

要检测用户单击了此类伪链接,可以使用以下onCellSelect回调

onCellSelect: function (rowid, iRow, iCol, e) {
    var $self = $(this), colModel = $self.jqGrid("getGridParam", "colModel");
    if (colModel[iCol].name === "myColumn") { // test for the click in myColumn column
        alert("OK here we can do something");
    }
}

单击该警报将显示在该列中的所有位置,而不仅是在链接上。如果要检测仅单击链接,则我们应该测试e.tagret,它是用户单击的元素:

onCellSelect: function (rowid, iRow, iCol, e) {
    var $self = $(this), colModel = $self.jqGrid("getGridParam", "colModel");
    if (colModel[iCol].name === "myColumn" && $(e.tagret).hasClass("myLink")) {
        alert("OK, link is clicked and here we can do something");
    }
}

因此onCellSelect可用于处理网格的每个单元格上的click事件。如果需要额外禁止选择网格,则应使用beforeSelectRow而不是onCellSelect。例如,参见the answer

10-06 02:08