jqGrid在ondblClickRow上给出了未定义的列

时间:2015-11-05 14:41:29

标签: jquery jqgrid

我想在dubble点击行上获取特定的列值。

我尝试过这两篇文章的解决方案,但没有成功:

  1. jqGrid HOWTO: Get the value of specific cell upon double click on row

  2. jqGrid gridComplete:- getRowData - get row cell value from array

  3. 我有以下代码:

    jQuery("#list2").jqGrid({
        url:'<%=request.getContextPath()%>/peripherals/list',
        datatype: "json",
        mtype:"POST",
        colNames:['Id', 'Name', 'Gateway', 'Type', 'Status', 'Created On', 'status_id'],
        colModel:[{name:'id',index:'id', align:"right",hidden:true},        
                    {name:'Name',index:'Name', align:"left", shrinkToFit: true},
                    {name:'BoxName',index:'BoxName', align:"left", shrinkToFit: true},
                    {name:'Type',index:'Type', align:"left", shrinkToFit: true},
                    {name:'Status',index:'Status', align:"left", shrinkToFit: true},
                    {name:'Time_Tag',index:'Time_Tag', align:"left", shrinkToFit: true},
                    {name:'status_id',index:'status_id', align:"right",hidden:true}
        ],
    
        height: 500,
        rowNum:50,
        rowList:[10,20,30,50,75,100,500,1000],
        pager: '#pager2',
        sortname: 'id',
        viewrecords: true,
        sortorder: "desc",
        caption:"",
        ondblClickRow: function(id) {
            var rowData = jQuery(this).getRowData(id);
    
            var selRow = jQuery("#list2").jqGrid('getGridParam','selarrrow');
            var data = jQuery(this).jqGrid('getRowData',selRow);
            alert("Type -> "+data.Type + ", Name -> " + data.name); // gives undefined instead of values
    
            if(rowData['status_id'] == 7){
                jQuery(".alert").show();
                jQuery(".alert").html("<strong>Warning!</strong> "+rowData['Status']+" for "+rowData['Name']);  
            } else {
                window.location ="<%=request.getContextPath()%>/peripherals/detail/" + id;  
            }
        }    
    });
    

1 个答案:

答案 0 :(得分:1)

尚未完全明确您需要实施的内容,但ondblClickRow的代码包含一些明显的错误。

您使用

var selRow = jQuery("#list2").jqGrid('getGridParam','selarrrow');
var data = jQuery(this).jqGrid('getRowData',selRow);

总是将空对象{​​{1}}分配给{},因为参数data应该是rowid,但selRow等于selRow总是因为{ {1}}获取多选网格的rowid数组。您没有使用[]选项。因此selarrrow的值为multiselect: true。如果您需要获取所选行的rowid,则应使用selarrrow而不是[]。另一方面,您编写了selrow回调代码,因此最好只使用回调的selarrrow参数。

由于使用ondblClickRow而不是id(或更好rowData['Status']),因此存在第二个重要错误。

如果我正确理解你想做什么,那么你应该将rowData['status_id']的实现重写为以下

rowData.status_id