2014-01-15 2 views
0

dhtmlxGrid 라이브러리를 사용하고 있습니다.dhtmlxGrid filterByAll 및 updateFromXML

updateFromXML 함수를 사용하여 몇 분마다 새로운 데이터로 타이머를 업데이트합니다.

내 문제는 mygrid.filterByAll()을 추가 할 때 updateFromXML 기능이 중단된다는 것입니다. 새 행을 삽입하거나 삭제하지 않습니다. 기존 행의 업데이트 만 수행합니다. 아래에 표시된 doAfterUpdate 함수에는 깨진 코드가 있습니다.

라인을 제거하면 mygrid.filterbyAll이 예상대로 잘 작동합니다.

아래 코드는 제 코드입니다. 나는 내가하고있는 일의 틀을 보여 주었다.

<div id="gridbox" style="width:50%; height:500px; background-color:white;"></div> 
    <br> 
    <div><a href="#" onClick="start_timer_jobs()">Reload grid - Timer refresh data only </a></div> 
    <br> 
    <script> 

var curr_sort = null; 
var fetch_interval = null ; 


function doAfterUpdate() { 

mygrid.filterByAll(); ////something broken here. 
if (curr_sort.length > 0) { 
console.log ('setting sorting') ; 
    var col_type = mygrid.getColType(curr_sort[0]); 
    mygrid.sortRows (curr_sort[0]) ; 
    } 
return ; 
} 


function fetch_data () { 

curr_sort = mygrid.getSortingState(); 

var file_list = [ 'first.xml', 'second.xml', 'third.xml', 'first.xml', 'second.xml', 'third.xml' ] 
var random_number = Math.floor((Math.random()*5)); 
var url = './test_dirs/' + file_list[ random_number ] 
console.log ('fetch data ' + url) ; 
mygrid.updateFromXML(url, true, true , doAfterUpdate); 



} 

function start_timer_jobs () { 

console.log ('in timer') ; 

if (fetch_interval) clearInterval(fetch_interval); 
fetch_interval = setInterval(function() { fetch_data(); }, 10*1000); 


} 

mygrid = new dhtmlXGridObject('gridbox'); 
mygrid.setImagePath("./imgs/"); 
mygrid.setHeader("Sales,edtxt,ed,Price,In Store,Shipping,Bestseller,Publication"); 
mygrid.setColumnIds("Sales,edtxt,ed,Price,Store,Shipping,Bestseller,Publication"); 
mygrid.attachHeader("#numeric_filter,#text_filter,#numeric_filter,#numeric_filter,#numeric_filter,#numeric_filter,#numeric_filter,#text_filter"); 

mygrid.setInitWidths("50,150,100,80,80,80,80,200"); 
mygrid.setColAlign("right,left,left,right,center,left,center,center"); 
mygrid.setColTypes("ro,edtxt,ed,ro,ro,ro,ro,ro"); 

mygrid.setColSorting("int,str,str,int,str,str,str,str"); 
mygrid.init(); 
mygrid.enableColumnMove(true); 
mygrid.enableSmartRendering(true); 
mygrid.preventIECaching(true); 
mygrid.setSkin("dhx_skyblue"); 
mygrid.loadXML("./test_dirs/grid.xml" ); 

    </script> 

답변

0

그리드의 필터를 사용하여 비슷한 문제가 발생했습니다.

확신을 수행해야합니다

  • 이 작동하지 않는 경우
  • 다음 다음 (clearAndLoad를 사용

에 다시 필터를 넣어 격자를 새로 필터를 제거 대신) : http://forum.dhtmlx.com/viewtopic.php?f=2&t=19603