jqGrid中onCellSelect函数的确切反转是什么?

时间:2014-11-11 06:54:57

标签: javascript jquery jqgrid

我的代码 -

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

},

jqGrid中onCellSelect函数的确切反转是什么?

1 个答案:

答案 0 :(得分:1)

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

jqGrid在创建网格期间注册click个事件处理程序。因此,如果用户单击网格的某个单元格,您可以执行某些操作。参数rowidiCol可帮助您确定单击了哪个单元格,e参数(click事件的事件对象)可以在需要时为您提供更多信息。 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