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>