2

単一のフィールド主キーを含まないデータベーステーブルからJQGridを作成しています。したがって、idとして指定しているフィールドは一意ではなく、同じフィールドが複数の行に存在します。

このため、ondblClickRowを使用してデータへの参照をグリッドの外部の関数に渡す場合は、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
});
4

5 に答える 5

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:メソッド

于 2012-04-18T03:43:27.983 に答える
5

探しているものは既にイベントに渡されています。関数宣言に使用可能なパラメーターをさらに含める必要があります。

ondblClickRow: function(id, iRow, iCol, e) {
    alert(iRow);
},
于 2010-05-10T02:28:51.073 に答える
2

主な質問の答えはgreat_llamaを提供しますが、jqGridでid使用される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>";

したがって、サーバーを送信するメインデータは2行にidなる可能性がありますが、行カウンターになる可能性のある属性を追加するだけで問題を解決できます。attributeの値は数値であっidてはなりません。代わりに任意の文字列を使用できます。データの性質上これが可能な場合はid、他のデータから構成された文字列として一意のものを作成できます。

于 2010-05-12T21:35:16.423 に答える
1

最近、行IDではなく行番号で行データにアクセスするという同じ要件がありました。行IDがありません。以下のコードは私にとってはうまくいきます。注: 行数は 1 から始まります。

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

于 2011-10-15T06:57:38.273 に答える
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);}
于 2016-04-13T04:35:43.073 に答える