Jquery JQgrid-获取行号而不是ID
我正在从不包含单个字段主键的数据库表创建JQGrid。 因此,我作为id提供的字段不是唯一的,并且同一个字段存在于多行中 因此,当使用ondblClickRow将对数据的引用传递给网格外部的函数时,我需要使用rownumber而不是id 为了进行测试,我使用了Jquery JQgrid-获取行号而不是ID,jquery,jqgrid,methods,rowid,Jquery,Jqgrid,Methods,Rowid,我正在从不包含单个字段主键的数据库表创建JQGrid。 因此,我作为id提供的字段不是唯一的,并且同一个字段存在于多行中 因此,当使用ondblClickRow将对数据的引用传递给网格外部的函数时,我需要使用rownumber而不是id 为了进行测试,我使用了ondblClickRow:function(id){alert($(“#grid1”).getInd('rowid');},,我应该使用行号获取并发出警报,除非行号不起作用 我已经看了文档,不明白我做错了什么 任何帮助都将不胜感激 提前感
ondblClickRow:function(id){alert($(“#grid1”).getInd('rowid');},
,我应该使用行号获取并发出警报,除非行号不起作用
我已经看了文档,不明白我做错了什么
任何帮助都将不胜感激
提前感谢,,
马里奥
下面是我的完整表格:
jQuery(document).ready(function(){
var mygrid = jQuery("#grid1").jqGrid({
datatype: 'xmlstring',
datastr : grid1RsXML,
width: 1024,
height: 500,
colNames:['DEVICE_ID','JOB_SIZE_IN_BYTES', 'USER_NAME','HOST_NAME','DAY_OF_WEEK','JOB_ID'],
colModel:[
{name:'DEVICE_ID',index:'DEVICE_ID', width:55, sortable:true},
{name:'JOB_SIZE_IN_BYTES',index:'JOB_SIZE_IN_BYTES', width:40, sortable:true},
{name:'USER_NAME',index:'USER_NAME', width:60, sortable:true},
{name:'HOST_NAME',index:'HOST_NAME', width:50,align:"right", sortable:true},
{name:'DAY_OF_WEEK',index:'DAY_OF_WEEK', width:10, sortable:true},
{name:'JOB_ID',index:'JOB_ID', width:30, sortable:true}
],
rowNum:1000,
autowidth: true,
//rowList:[10,20,30],
rowList:[1],
pager: '#grid1Pager',
sortname: 'DEVICE_ID',
viewrecords: true,
rownumbers: true,
sortorder: "desc",
sortable: true,
gridview : true,
xmlReader: { root : "recordset", row: "record", repeatitems: false, id: "DEVICE_ID" },
caption:"All Jobs - Double Click for detailed history",
ondblClickRow: function(id){alert($("#grid1").getInd('rowid'));},
toolbar: [true,"top"],
url: grid1RsXML
});
您要查找的内容已传递给事件,您只需在函数声明中包含更多可用参数:
ondblClickRow: function(id, iRow, iCol, e) {
alert(iRow);
},
你的主要问题的答案给了你一个很好的答案,但我觉得你有点误解了
id
是jqGrid使用的XML输入。默认的xmlReader
具有id:[id]“
。因此,您只需从xmlReader
的定义中删除id:“DEVICE\u id”
,并将id
属性放入数据中:
var grid1RsXML = "<?xml version='1.0' encoding='utf-8'?>"+
"<recordset>"+
"<rows>"+
"<record id='1'>"+
"<DEVICE_ID>data1</DEVICE_ID>"+
"<JOB_SIZE_IN_BYTES>data2</JOB_SIZE_IN_BYTES>"+
"<USER_NAME>data3</USER_NAME>"+
"<HOST_NAME>data4</HOST_NAME>"+
"<DAY_OF_WEEK>data5</DAY_OF_WEEK>"+
"<JOB_ID>data6</JOB_ID>"+
"</record>"+
"<record id='2'>"+
"<DEVICE_ID>data1</DEVICE_ID>"+
"<JOB_SIZE_IN_BYTES>data2</JOB_SIZE_IN_BYTES>"+
"<USER_NAME>data3</USER_NAME>"+
"<HOST_NAME>data4</HOST_NAME>"+
"<DAY_OF_WEEK>data5</DAY_OF_WEEK>"+
"<JOB_ID>data6</JOB_ID>"+
"</record>"+
"<record id='3'>"+
"<DEVICE_ID>data1</DEVICE_ID>"+
"<JOB_SIZE_IN_BYTES>data2</JOB_SIZE_IN_BYTES>"+
"<USER_NAME>data3</USER_NAME>"+
"<HOST_NAME>data4</HOST_NAME>"+
"<DAY_OF_WEEK>data5</DAY_OF_WEEK>"+
"<JOB_ID>data6</JOB_ID>"+
"</record>"+
"</rows>"+
"</recordset>";
var grid1RsXML=“”+
""+
""+
""+
“数据1”+
“数据2”+
“数据3”+
“数据4”+
“数据5”+
“数据6”+
""+
""+
“数据1”+
“数据2”+
“数据3”+
“数据4”+
“数据5”+
“数据6”+
""+
""+
“数据1”+
“数据2”+
“数据3”+
“数据4”+
“数据5”+
“数据6”+
""+
""+
"";
因此,发送服务器的主要数据可能有两行,但如果您只添加
id
属性,该属性可以是行计数器,则可以解决问题。id
属性的值不能是数字,可以使用任何字符串。如果您的数据的性质允许这样做,您可以生成一个唯一的id
,作为由其他数据组成的字符串。最近我有相同的要求,即按行号而不是行id访问行数据。我没有任何行id。下面的代码对我适用。注意:行计数从1开始
var rowNum=$(“#grid1”).getGridParam(“selarrrow”);
$(“#grid1”).getRowData(rowNum)代码>我认为可以使用getInd()方法,如下所示:
var sel_id = $grid.getGridParam('selrow');
var index = $grid1.jqGrid('getInd',sel_id); // counting from 1
ondblClickRow:function(rowid,iRow,iCol,e){var curPage =$("#gridTable").getGridParam("page");//current page var pageSize = $("#gridTable").getGridParam("rowNum");//records per pagevar count = parseInt((curPage-1)*pageSize) + parseInt(rowid);}
我是这样做的:
var sel_id = $grid.getGridParam('selrow');
var index = $grid1.jqGrid('getInd',sel_id); // counting from 1
ondblClickRow:function(rowid,iRow,iCol,e){var curPage =$("#gridTable").getGridParam("page");//current page var pageSize = $("#gridTable").getGridParam("rowNum");//records per pagevar count = parseInt((curPage-1)*pageSize) + parseInt(rowid);}
+1-只是好奇,这对于这个特定的问题不重要,但是当网格被排序时,iRow会发生什么?大概它会改变以匹配新的行顺序?是的,它会。我不会基于行进行操作,而是将组合键向下发送到隐藏列中,以便它们可以用于后续请求。