我想在dubble点击行上获取特定的列值。
我尝试过这两篇文章的解决方案,但没有成功:
jqGrid HOWTO: Get the value of specific cell upon double click on row
jqGrid gridComplete:- getRowData - get row cell value from array
我有以下代码:
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;
}
}
});
答案 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