Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqGrid onCellSelect getGridParam selrow在第一次单击时返回null_Javascript_Jqgrid - Fatal编程技术网

Javascript jqGrid onCellSelect getGridParam selrow在第一次单击时返回null

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(

我正在使用jqGrid,在第一次单击单元格时,我得到了sel_id的空值:

 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!很棒的提示。我真的很感谢你为支持这个组件所付出的努力。