function drawTable(url){
$('#reportList').jqGrid('GridUnload');
$('#reportList').jqGrid({
url: url,
mtype: 'GET',
datatype: 'json',
colNames:['num','section1','section_detail','product','product_description','status','rate','start_date','end_date','issue','in_charge','write_date','view'],
colModel:[
{name:'num', index:'num', hidden:true},
{name:'section1', index:'section1', width:60},
{name:'section2', index:'section2'},
{name:'product', index:'product', width:90},
{name:'product_description', index:'product_description'},
{name:'status', index:'status', width:50},
{name:'rate', index:'rate', width:50},
{name:'start_date', width:90, index:'start_date'},
{name:'completion_date', width:90, index:'completion_date'},
{name:'issues', index:'issues'},
{name:'in_charge', index:'in_charge', width:80},
{name:'writedate', index:'writedate',width:90},
{name:'rewrite', index:'rewrite', width:60, formatter: function addButton(cellvalue, options, rowobject){
return "<input class='btnEdit' type='button' value='view' onClick='editReport.call(this)'/>"
}}
],
pager: '#pager',
sortname: 'section1',
sortorder: 'DESC',
multiselect: false,
rownumbers: true,
rowNum:50,
loadonce: true,
multiselect:true,
gridComplete: function(){
}
});
}
function editReport(){
//get row number
var clickedRow = $(this).closest("tr.jqgrow").attr("id");
var ids = jQuery('#reportList').jqGrid('getDataIDs');
// get row object with row num
var rowId=ids[clickedRow-1];
var rowData = jQuery('#reportList').jqGrid('getRowData', rowId);
getReportInfo(rowData.num)
}
您好,我正在使用Spring框架制作简单的报表程序。
为了显示所有已注册的报告,我应用了jqGrid(它的十三列表)以获得更好的用户界面。所有列除了&#39; num&#39;并且&#39;查看&#39;显示报告的详细信息。专栏&#39; num&#39;隐藏信息以从数据库中检索所有其他信息。最右边的列(&#39; view&#39;)是一个按钮,用于在子窗口中查看报告的详细信息。
在功能&#39; editReport&#39;中,我得到了数字&#39;通过查找单击的行号来查找报告。
我看起来很好。但是,当我每页设置15行并更改为第2页时,&#39; clickedRow&#39;生成错误的号码。当点击第2页的第一行时,我希望为1,但它会返回16 ..所以,它不能得到数字#39;来自点击的行并生成错误..
答案 0 :(得分:2)
editReport
的代码不正确。值$(this).closest("tr.jqgrow").attr("id")
不是行索引。根据定义,它是 rowid 。您根本不需要使用getDataIDs
。取而代之的是,您可以使用var rowId = $(this).closest("tr.jqgrow").attr("id");
,然后将该值用作getRowData
中的选项或其他方法中的任何选项。
此外,如果num
列包含唯一值(所有行中的值不同),则可以在{{1的列定义中添加key: true
属性} num
中的列。它将通知jqGrid使用列中的值作为rowid(colModel
元素的id
属性的值)。另一种方法是添加<tr>
,但为了确保方法有效,您应该包含来自jsonReader: { id: "num" }
的JSON响应示例(至少一行或JSON数据)。此外,了解您使用的jqGrid的版本以及jqGrid(free jqGrid,商业Guriddo jqGrid JS或旧的jqGrid的 fork 非常重要。版本&lt; = 4.7)。