keygen
12 Jun 2011, 9:19 AM
We have a Grid and a ListStore with a ListLoader. We make a request to the server and build the grid with an aggregation field. When the data were downloaded faster than the grid is rendered, then the aggregation field is calculated incorrectly.
- gxt 2.2.4, gwt 2.3
- Sample code
public class Test2 implements EntryPoint {
@Override
public void onModuleLoad() {
BaseModelData model1 = new BaseModelData();
model1.set("number", 1);
BaseModelData model2 = new BaseModelData();
model2.set("number", 2);
final ArrayList<BaseModelData> result = new ArrayList<BaseModelData>(Arrays.asList(model1,model2));
ListStore<BaseModelData> store = new ListStore<BaseModelData>(new BaseListLoader<ListLoadResult<?>>(
new DataProxy<List<BaseModelData>>() {
@Override
// emulating an asynchronous HTTP request
public void load(DataReader<List<BaseModelData>> reader,Object loadConfig,final AsyncCallback<List<BaseModelData>> callback) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
callback.onSuccess(result);
}
});
}
}));
store.getLoader().load(); // send request
ColumnConfig columnConfig = new ColumnConfig("text","text",100);
ColumnConfig columnConfig2 = new ColumnConfig("number","Number",100);
ColumnModel cm = new ColumnModel(Arrays.asList(columnConfig,columnConfig2));
AggregationRowConfig<BaseModelData> row = new AggregationRowConfig<BaseModelData>();
row.setHtml("text", "Total");
row.setSummaryType("number", SummaryType.SUM);
row.setSummaryFormat("number", NumberFormat.getDecimalFormat());
cm.addAggregationRow(row);
Grid<BaseModelData> grid = new Grid<BaseModelData>(store, cm);
grid.setPixelSize(500, 500);
// workaround
// grid.setLazyRowRender(0);
RootPanel.get().add(grid);
}
}
- gxt 2.2.4, gwt 2.3
- Sample code
public class Test2 implements EntryPoint {
@Override
public void onModuleLoad() {
BaseModelData model1 = new BaseModelData();
model1.set("number", 1);
BaseModelData model2 = new BaseModelData();
model2.set("number", 2);
final ArrayList<BaseModelData> result = new ArrayList<BaseModelData>(Arrays.asList(model1,model2));
ListStore<BaseModelData> store = new ListStore<BaseModelData>(new BaseListLoader<ListLoadResult<?>>(
new DataProxy<List<BaseModelData>>() {
@Override
// emulating an asynchronous HTTP request
public void load(DataReader<List<BaseModelData>> reader,Object loadConfig,final AsyncCallback<List<BaseModelData>> callback) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
callback.onSuccess(result);
}
});
}
}));
store.getLoader().load(); // send request
ColumnConfig columnConfig = new ColumnConfig("text","text",100);
ColumnConfig columnConfig2 = new ColumnConfig("number","Number",100);
ColumnModel cm = new ColumnModel(Arrays.asList(columnConfig,columnConfig2));
AggregationRowConfig<BaseModelData> row = new AggregationRowConfig<BaseModelData>();
row.setHtml("text", "Total");
row.setSummaryType("number", SummaryType.SUM);
row.setSummaryFormat("number", NumberFormat.getDecimalFormat());
cm.addAggregationRow(row);
Grid<BaseModelData> grid = new Grid<BaseModelData>(store, cm);
grid.setPixelSize(500, 500);
// workaround
// grid.setLazyRowRender(0);
RootPanel.get().add(grid);
}
}