JQgrid - 获取行号而不是ID

时间:2010-05-10 01:11:08

标签: jquery jqgrid methods rowid

我正在从不包含单个字段主键的数据库表创建JQGrid。 因此,我作为id提供的字段不是唯一的,并且在几行中存在相同的字段。

因此,当使用ondblClickRow将对数据的引用传递给网格外部的函数时,我需要使用rownumber而不是id。

要进行测试,我正在使用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
});

5 个答案:

答案 0 :(得分:7)

我认为你可以使用getInd()方法,如下所示:

var sel_id = $grid.getGridParam('selrow');
var index = $grid1.jqGrid('getInd',sel_id); // counting from 1

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods

答案 1 :(得分:5)

您正在寻找的内容已经传递给活动,您只需要在函数声明中包含更多可用参数:

ondblClickRow: function(id, iRow, iCol, e) {
    alert(iRow);
},

答案 2 :(得分:2)

你的主要问题的答案给了你great_llama,但它接触到我,你有点误解id作为jqGrid使用的XML输入。默认xmlReaderid: "[id]"。因此,您只需从id: "DEVICE_ID"的定义中删除xmlReader,并在您的数据中放置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>";

因此,发送服务器的主数据可能有两行,但如果只添加id属性,可以是行计数器,则可以解决问题。 id属性的值不能是数字,您可以使用任何字符串。如果您的数据的性质允许这样做,您可以生成一个唯一的id作为由您的其他数据组成的字符串。

答案 3 :(得分:1)

最近我有同样的要求,即按行号而不是行id访问行数据。我没有任何行ID。下面的代码适合我。注意:行计数从1开始。

var rowNum=$("#grid1").getGridParam("selarrrow"); $("#grid1").getRowData(rowNum);

答案 4 :(得分:0)

我这样做:

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);}