(jqGrid) 查找单击的行号时出错
(jqGrid) Error when finding clicked row number
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(它是 13 列 table)以获得更好的用户界面。除了 'num' 和 'view' 之外的所有列都显示报告的详细信息。列 'num' 是隐藏信息,用于从数据库中检索所有其他信息。最右边的列 ('view') 是一个按钮,用于查看子 window.
中报告的详细信息
在函数 'editReport' 中,我通过找到点击的行号得到报告的 'num'。
我看起来很好。但是,当我设置每页 15 行并更改为第 2 页时,'clickedRow' 的变量生成错误的数字。单击第 2 页的第一行时,我期望 1,但它 returns 16.. 因此,它无法从单击的行中获取 'num' 并生成错误..
editReport
的代码不正确。值 $(this).closest("tr.jqgrow").attr("id")
是 而不是行索引 。根据定义,它是 rowid。您根本不需要使用 getDataIDs
。您可以使用 var rowId = $(this).closest("tr.jqgrow").attr("id");
代替,然后将该值用作 getRowData
或其他方法中的任何选项。
此外,如果 num
列包含 唯一的 值(所有行中的值都不同),那么您可以添加 key: true
属性在 colModel
中 num
列的列定义中。它将通知 jqGrid 使用列中的值作为 rowid(<tr>
元素的 id
属性的值)。另一种方法是添加 jsonReader: { id: "num" }
,但要确保该方法有效,您应该包括来自 url
的 JSON 响应示例(至少一行或 JSON数据)。此外,重要的是要知道您使用的是哪个 version jqGrid 以及来自哪个 fork jqGrid(free jqGrid, commercial Guriddo jqGrid JS 或版本中的旧 jqGrid <=4.7).
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(它是 13 列 table)以获得更好的用户界面。除了 'num' 和 'view' 之外的所有列都显示报告的详细信息。列 'num' 是隐藏信息,用于从数据库中检索所有其他信息。最右边的列 ('view') 是一个按钮,用于查看子 window.
中报告的详细信息
在函数 'editReport' 中,我通过找到点击的行号得到报告的 'num'。
我看起来很好。但是,当我设置每页 15 行并更改为第 2 页时,'clickedRow' 的变量生成错误的数字。单击第 2 页的第一行时,我期望 1,但它 returns 16.. 因此,它无法从单击的行中获取 'num' 并生成错误..
editReport
的代码不正确。值 $(this).closest("tr.jqgrow").attr("id")
是 而不是行索引 。根据定义,它是 rowid。您根本不需要使用 getDataIDs
。您可以使用 var rowId = $(this).closest("tr.jqgrow").attr("id");
代替,然后将该值用作 getRowData
或其他方法中的任何选项。
此外,如果 num
列包含 唯一的 值(所有行中的值都不同),那么您可以添加 key: true
属性在 colModel
中 num
列的列定义中。它将通知 jqGrid 使用列中的值作为 rowid(<tr>
元素的 id
属性的值)。另一种方法是添加 jsonReader: { id: "num" }
,但要确保该方法有效,您应该包括来自 url
的 JSON 响应示例(至少一行或 JSON数据)。此外,重要的是要知道您使用的是哪个 version jqGrid 以及来自哪个 fork jqGrid(free jqGrid, commercial Guriddo jqGrid JS 或版本中的旧 jqGrid <=4.7).