Javascript jqGrid onCellSelect getGridParam selrow在第一次单击时返回null
我正在使用jqGrid,在第一次单击单元格时,我得到了sel_id的空值:Javascript jqGrid onCellSelect getGridParam selrow在第一次单击时返回null,javascript,jqgrid,Javascript,Jqgrid,我正在使用jqGrid,在第一次单击单元格时,我得到了sel_id的空值: function onCellSelect(rowid, iCol, cellcontent, e) { var DownlinkIndex = 7; var UplinkIndex = 8; var SalCodeIndex = 3; if (iCol == DownlinkIndex) { var grid = jQuery(
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个参数。但在第一次单击时,它总是空的。然后在第二次单击时,它被设置为第一次单击。然后将第三次单击设置为第二次单击。奥列格,如果你能帮忙,我将不胜感激。在阅读了奥列格的一堆帖子之后。我将代码移动到另一个函数onbeforesect
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)工作正常 使用var grid=jQuery(这个);而不是var grid=jQuery(“#salersonlist”)
var myCellData=grid.jqGrid('getCell',rowid,'salersonid');而不是
var myCellData=grid.jqGrid('getCell',sel_id',salersonid') 我很高兴我以前的帖子能帮到你。您最初遇到的主要问题是,
onCellSelect
和onBeforeSelect
都将在选中单击的行之前被调用,因此selrow
无法使用。您可以使用rowid
而不是sel\u id
。您当前的代码似乎也对,但我建议您只对其进行最低限度的更改:1)使用var grid=jQuery(this)代码>而不是var grid=jQuery(“#salersonlist”)代码>2)使用类似于var cmName=cm[iCol].name的东西;如果(cmName==“上线”| | cmName==“下线”){
,因为两者的主体都是相同的。祝你一切顺利。谢谢Oleg!很棒的提示。我真的很感谢你为支持这个组件所付出的努力。