Как обновить данные в 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()
это еще один способ уведомить сетку, что данные изменились.
Читая пример DataView, кажется, что нужно выполнить несколько вызовов, кроме render ().
- grid.invalidateRows (e.changedRows);
- grid.updateRowCount ();
- grid.invalidateAllRows ()
но лучший способ, вероятно, invalidate()
Duh.
После добавления 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();
}
Код для аннулирования из github bwu_datagrid
void invalidate() {
updateRowCount();
invalidateAllRows();
render();
}