2017-01-25 13 views
0

FirefoxのJqGridでネストされたデータの再帰を使用してサブグリッドのn番目のラベルをロードする問題に直面しています。jQGrid Firefoxネストされたサブグラフをロードするときの問題

サブグリッドは、常にネストされたデータセットの第16レベルで失敗しました。

Google ChromeとIEでは、うまく動作していますが、Firfoxで発行しています。

は、ここに私のコードです:

<div style="width:20000px"> 
<table id="list" ></table> 
<div id="pager1"></div> 

jQuery("#list").jqGrid({ 
    datatype: "local", 
    height: '100%', 
    width: '100%', 

    ExpandColClick:true, 
    colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'], 
    colModel:[ 
     {name:'id',index:'id', width:60, sorttype:"int"}, 
     {name:'invdate',index:'invdate', width:90, sorttype:"date"}, 
     {name:'name',index:'name', width:100}, 
     {name:'amount',index:'amount', width:80, align:"right",sorttype:"float"}, 
     {name:'tax',index:'tax', width:80, align:"right",sorttype:"float"}, 
     {name:'total',index:'total', width:80,align:"right",sorttype:"float"}, 
     {name:'note',index:'note', width:150, sortable:false} 
    ], 
    subGrid:true, 
    caption: "Manipulating Array Data", 
    subGridRowExpanded:function(subgrid_id, row_id) { 
     callSubGrid(subgrid_id,row_id); 
    } 
}); 

function addGridData(gridId){ 
    var mydata = [ 
     {id:"1",invdate:"2007-10-01",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"} 
    ]; 
    for(var i=0;i< mydata.length;i++){ 
     jQuery("#"+gridId).jqGrid('addRowData',i+1,mydata[i]); 
    } 
} 


function callSubGrid(subgrid_id,row_id){ 
    var time=new Date().valueOf() 
    var subgrid_table_id, pager_id; 
    subgrid_table_id = 'row_id'+row_id+'_'+time+'_t'; 
    pager_id = 'p_'+subgrid_table_id; 
    var table=getGridTable(subgrid_table_id,pager_id); 

    $('#'+subgrid_id).html(table); 

    jQuery("#"+subgrid_table_id).jqGrid({ 
     datatype: "local", 
     height: '100%', 
     width: '100%', 
     colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'], 
     colModel:[ 
      {name:'id',index:'id', width:60, sorttype:"int"}, 
      {name:'invdate',index:'invdate', width:90, sorttype:"date"}, 
      {name:'name',index:'name', width:100}, 
      {name:'amount',index:'amount', width:80, align:"right",sorttype:"float"}, 
      {name:'tax',index:'tax', width:80, align:"right",sorttype:"float"}, 
      {name:'total',index:'total', width:80,align:"right",sorttype:"float"}, 
      {name:'note',index:'note', width:150, sortable:false} 
     ], 

     subGridOptions:{ 
      plusicon : "ui-icon-triangle-1-e", 
      minusicon : "ui-icon-triangle-1-s", 
      openicon : "ui-icon-arrowreturn-1-e", 
      reloadOnExpand: false, 
      selectOnExpand : true, 
      expandOnLoad : false 
     }, 

     caption: "Manipulating Array Data", 
     subGrid:true, 

     subGridRowExpanded:function(subgrid_id, row_id) { 
      callSubGrid(subgrid_id,row_id); 
     } 
    }); 
    addGridData(subgrid_table_id); 
} 
addGridData('list'); 

enter image description here

私は、おかげでこの問題を解決してください。

Brijeshシン

答えて

0

私はあなたが表示すると、コードを書き直ししようとするグリッドを、再設計するためにあなたをお勧めします。作成するすべてのサブグリッドには、同じ列ヘッダーと同じ(不要な)キャプションがあります。私はTreeGridがデータを表示するのに適していると思います。あなたの現在のコードに

備考:

  • 、作成したグリッド/サブグリッド内のデータを、埋めるためにループ内でaddRowDataを使用することはありませんしてください。代わりにグリッドのパラメータdataを使用する必要があります。
  • 常にはすべてのサブグリッドに対して一意のidPrefixを使用する必要があります。入力データのidは、行の属性idid od <tr>要素)の値として使用されます。したがって、IDの重複を取得できます。 idPrefixの使用、たとえばidPrefix: "s_" + rowid + "_"は、idの値を、入力データのプレフィックスと値、およびidの値に基づいて設定します。その結果、HTMLページ上でIDの重複を防ぐことができます。
+0

こんにちは、応答ありがとうございます。私の基本的な問題は、IEとChromeでうまく動作するコードですが、Firefoxでは、サブグリッドのネストされたセットの16番目のレベルをクリックするとコードが失敗しました。 –

+0

@BrijeshSingh:ようこそ!あなたが投稿したあなたのコードは、IEやChromeで問題が見られなくても間違っています(コードの注釈を参照)。さらに、**バグ**を報告したい場合は、使用するjqGridのバージョンと、使用するjqGridのフォークに関する正確な情報を投稿する必要があります([free jqGrid]()、commercial [Guriddo jqGrid JS]()またはバージョン<= 4.7の古いjqGrid)。デモを準備するのが最善で、問題を再現するために使用できます。 – Oleg

関連する問題