我正在使用jqGrid,在第一次单击该单元格时,我为sel_id得到一个null:
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个参数。但是在第一次单击时,它始终为null。然后在第二次单击时,将其设置为第一次单击。然后第三次单击设置为第二次单击。奥列格,如果你能提供帮助,我将不胜感激。
答案 0 :(得分:0)
阅读了一堆Oleg的帖子。我将代码移到了onSeeSelect上的另一个函数。
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)有效。
答案 1 :(得分:0)
使用var grid = jQuery(this);而不是var grid = jQuery('#SalesPersonList');
和var myCellData = grid.jqGrid(' getCell',rowid,' Salespersonid');而不是
var myCellData = grid.jqGrid(' getCell',sel_id,' Salespersonid');