2013-07-03 85 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');