2017-01-25 4 views
0

중첩 데이터에 대한 재귀를 사용하여 서브 그래프의 n 번째 레이블을로드하는 Firefox의 JqGrid에서 문제가 발생했습니다.jQGrid 중첩 된 서브 그룹로드시 Firefox 문제

Subgrid는 항상 중첩 된 데이터 집합의 16 번째 수준에서 실패했습니다.

구글 크롬과 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은 행의 속성 (id od <tr> 요소)의 id 속성 값으로 사용됩니다. 따라서 ID 중복을 얻을 수 있습니다. 예를 들어 idPrefix: "s_" + rowid + "_"과 같이 idPrefix을 사용하면 접두어와 id 입력 데이터 속성 값을 기준으로 id 값을 설정할 수 있습니다. 결과적으로 HTML 페이지에서 ID 중복을 방지 할 수 있습니다.
+0

안녕하세요, 응답 해 주셔서 감사합니다. 내 기본 문제는 IE와 크롬에서 잘 작동하는 코드이지만 파이어 폭스에서는 중첩 된 서브 그리드 세트의 16 번째 레벨을 클릭하면 코드가 실패했다. –

+0

@BrijeshSingh : 천만에! IE와 Chrome에서 아무런 문제가 보이지 않는 경우에도 게시 한 코드는 잘못되었습니다 (코드 참고). 또한, ** 버그 **를보고하려면 사용하는 jqGrid의 버전과 사용하는 jqGrid의 포크 ([free jqGrid](), commercial [Guriddo jqGrid]에 대한 정확한 정보를 게시해야합니다. JS]() 또는 버전 <= 4.7의 이전 jqGrid). 문제를 재현하는 데 사용할 수있는 데모를 준비하는 것이 가장 좋습니다. – Oleg