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

时间:2013-07-03 20:34:53

标签: javascript jqgrid

我正在使用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。然后在第二次单击时,将其设置为第一次单击。然后第三次单击设置为第二次单击。奥列格,如果你能提供帮助,我将不胜感激。

2 个答案:

答案 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');