2014-09-14 6 views
2

다음과 같은 방법으로 기존 데이터 그레이드를 새로 고치려고하지만 행이 계속 나타나는 것처럼 렌더링 오류가 발생합니다. 이 작업을 수행하는 적절한 방법은 무엇입니까? DataView를 예를 읽기bwu_datagrid에서 데이터 새로 고침하는 방법

void onData(Map<String,Data> data_){ 
    if(identical(data,data_)) return; 
    data = data_; 
    if(provider == null){ 
    provider = new MapDataItemProvider(); 
    grid.setup(dataProvider: dataProvider, columns:columns, gridOptions: gridOptions); 
    }else{ 
    dataProvider.items.clear(); 
    } 
    data.forEach((k,v) => provider.add(toMapped(k,v)); 
    grid.render(); 
} 

답변

2

invalidateAllRows()github bwu_datagrid ...에서 올바르게 다른 방법이다 재기록되었다는 데이터 변경되었습니다.

+0

이 말이 더 합리적입니다. 고마워. –

2

,() 할하는 렌더링 이외의 몇 통화가 나타납니다.

  • grid.invalidateRows (e.changedRows);
  • grid.updateRowCount();
  • grid.invalidateAllRows()

하지만 가장 좋은 방법은 아마도 invalidate() 뜨아입니다. invalidate() 가한 후

그리드는 그리드 알릴

void onData(Map<String,Data> data_){ 
    if(identical(data,data_)) return; 
    data = data_; 
    if(provider == null){ 
    provider = new MapDataItemProvider(); 
    grid.setup(dataProvider: dataProvider, columns:columns, gridOptions: gridOptions); 
    }else{ 
    dataProvider.items.clear(); 
    } 
    data.forEach((k,v) => provider.add(toMapped(k,v)); 
    grid.invalidate(); 
} 

코드 무효화위한

void invalidate() { 
    updateRowCount(); 
    invalidateAllRows(); 
    render(); 
} 
관련 문제