2010-05-10 74 views
2

我正在從不包含單個字段主鍵的數據庫表創建JQGrid。 因此,我作爲id提供的字段不是唯一的,同一個字段存在於多行中。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

你正在尋找已經傳遞到事件是什麼,你只需要包括更多可用的參數在你的函數聲明:

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

+1 - 只是好奇,這對這個問題應該沒有關係,但什麼樣的好處當網格被分類時,是否允許iRow?據推測,它會改變以匹配行的新排序? – 2010-05-10 13:16:21

+0

是的,會的。我不是基於行來做事,而是將組合鍵發送到隱藏列中,以便它們可以用於後續請求。 – 2010-05-10 13:44:29

2

你的主要問題的答案給了你great_llama,但它跟我有關,你有點誤解id作爲jqGrid使用的XML輸入。默認xmlReaderid: "[id]"。所以,你剛剛從xmlReader定義中刪除id: "DEVICE_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>"; 

所以它把你的服務器可能有雙行,但如果你只需要添加id屬性,它可以是一排你的主要數據計數器可以解決你的問題。 id屬性的值不能是數字,您可以使用任何字符串代替。如果您的數據的性質允許這樣做,您可以生成一個獨特的id作爲由您的其他數據組成的字符串。

1

最近我有同樣的要求,即通過行號訪問行數據,而不是行ID。我沒有任何行ID。下面的代碼適用於我。注:行數從1

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

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