2013-07-03 68 views
0

我使用的jqGrid和对细胞的第一次点击返回null,我得到一个空的sel_id:的jqGrid onCellSelect getGridParam selrow首先点击

function onCellSelect(rowid, iCol, cellcontent, e) { 
     var DownlinkIndex = 7; 
     var UplinkIndex = 8; 
     var SalCodeIndex = 3; 

     if (iCol == DownlinkIndex) { 
      var grid = jQuery('#SalesPersonList'); 
      var sel_id = grid.jqGrid('getGridParam', 'selrow'); 
      var myCellData = grid.jqGrid('getCell', sel_id, 'Salespersonid'); 
      var mySalName = grid.jqGrid('getCell', sel_id, 'Name'); 
      ShowDownLink(myCellData, mySalName); 
     } 
     if (iCol == UplinkIndex) { 
      var grid = jQuery('#SalesPersonList'); 
      var sel_id = grid.jqGrid('getGridParam', 'selrow'); 
      var myCellData = grid.jqGrid('getCell', sel_id, 'Salespersonid'); 
      var mySalName = grid.jqGrid('getCell', sel_id, 'Name'); 
      ShowUpLink(myCellData, mySalName); 
     } 
    } 

事件方法被解雇。 4个参数正在填充。但在第一次点击时,它始终为空。然后在第二次点击时,它被设置为第一次点击。然后第三次点击被设置为第二次点击。奥列格,如果你能帮忙,我会很感激。

回答

0

读了一堆奥列格的帖子后。我将代码移到了onBeforeSelect的其他函数中。

function onBeforeSelectRow(rowid, e){ 
    console.log(rowid); 
    console.log(e); 

    var grid = jQuery('#SalesPersonList'); 
    iCol = $.jgrid.getCellIndex($(e.target).closest("td")[0]), 
     cm = grid.jqGrid("getGridParam", "colModel"); 
    console.log(cm); 
    if (cm[iCol].name === "Uplines") { 
     var myCellData = grid.jqGrid('getCell', rowid, 'Salespersonid'); 
       var mySalName = grid.jqGrid('getCell', rowid, 'Name'); 
       ShowUpLink(myCellData, mySalName); 
      return true; 
     } 
    if (cm[iCol].name === "Downlines") { 
     var myCellData = grid.jqGrid('getCell', rowid, 'Salespersonid'); 
       var mySalName = grid.jqGrid('getCell', rowid, 'Name'); 
       ShowDownLink(myCellData, mySalName);   
      return true; 
     } 


    return false; 

} 

因为我不再传递单元格,所以需要一些调整。现在我对代码更加了解了,我敢打赌,我可以只使用传递给onCellSelect的rowid参数。

我刚试过了,是的,它(使用onCellSelect的ROWID)的作品。

+0

我很高兴我的旧帖子可以帮助你。你最初的主要问题 - onCellSelect和onBeforeSelect都会在**被点击的行被选中之前被调用,所以'selrow'不能被使用。可以使用'rowid'而不是'sel_id'。你现在的代码看起来也是正确的,但我建议你只将它改为最小化:1)使用'var grid = jQuery(this);'而不是'var grid = jQuery('#SalesPersonList');'2)use像'var cmName = cm [iCol] .name; if(cmName ===“Uplines”|| cmName ===“Downlines”){'因为两个if都是相同的。最好的祝愿。 – Oleg

+0

谢谢奥列格!伟大的提示。我非常感谢您为支持此组件所付出的努力。 – Rich

+0

不客气! – Oleg

0

使用var grid = jQuery(this);而不是var grid = jQuery('#SalesPersonList');

和VAR myCellData = grid.jqGrid( 'getCell',ROWID, 'Salespersonid');而不是

var myCellData = grid.jqGrid('getCell',sel_id,'Salespersonid');