【问题标题】:Getting id as undefined when jqgrid row is clicked单击jqgrid行时获取未定义的id
【发布时间】:2015-10-09 08:04:23
【问题描述】:

我需要获取所选行的id,以突出显示它。但我得到id 未定义。可能是什么原因?

我用UserDetails jqgrid 附加了click 事件。单击UserDetails 网格时会调用以下函数。

var selectUserGrid = function(event) {
   var grid = $('#UserDetails');
      grid.jqGrid( {
         onSelectRow : function(id) {
            var i = id;
         }
      });
   grid.setSelection(i,true);
}

如何获得点击行的ID

【问题讨论】:

  • 我相信你之前也有同样的问题?
  • @Pekka 这个不一样。
  • 为什么不将grid.setSelection(i,true); 代码放入onSelectRow : 处理程序中?

标签: jquery jqgrid


【解决方案1】:

我想你对click事件的处理顺序有问题。

第一个问题是注册额外的click 事件处理程序。你为何这样做? jqGrid 已经注册了一个click 事件处理程序。 jqGrid 处理它并调用beforeSelectRow 回调,触发jqGridBeforeSelectRow 事件然后它选择行,它调用onSelectRow 回调,触发jqGridSelectRow 事件,调用onCellSelect 回调,触发触发器jqGridCellSelect。换句话说,jqGrid 处理click 事件并允许使用回调和事件来执行一些额外的操作,这些操作与jqGrid 的内部工作同步

如果您注册 第二个 click 处理程序,则您无法隔离 您的 click 处理程序将在 行之后调用已选择网格。

我建议您使用上述回调或事件。此外,您在发布的代码片段中使用setSelection。另一方面,不清楚如何填充网格。只有在 jqGrd 中插入相应的行后,您才能调用setSelection。我想你的真实代码是另一个。不过,您发布的代码无法正常工作。此外,代码定义了i 变量inside of onSelectRow 回调,但您尝试在回调的outside 中使用它。在这种情况下,i 将永远是undefined

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 2011-10-25
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多