Confirm this issue.
I have grid with GroupingView and 362 rows in grid (2 columns)
rows selected by programm from saved data in db
Code:
IdentityValueProvider<Answer> identity = new IdentityValueProvider<Answer>();
sm = new CheckBoxSelectionModel<Answer>(identity) {
protected void onSelectChange(Answer model, boolean select) {
super.onSelectChange(model, select);
service.logString("sm onSelectChange: "+ model.getId() , cl);
...................
};
};
sm.setSelectionMode(SelectionMode.SIMPLE);
ColumnConfig<Answer, String> answerCol = new ColumnConfig<Answer, String>(propsAnswer.name(), 250, "Answer");
answerCol.setCell(new AbstractCell<String>() {
@Override
public void render(Context context, String value, SafeHtmlBuilder sb) {
Answer a = new Answer();
try {
a = storeAns.findModelWithKey(context.getKey().toString());
} catch (Exception e) {}
String style = "style='color: " + (a.getAgent() > 0 ? "red" : "black") + "'";
if (a.getAgent() > 0) {
sb.appendHtmlConstant("<span " + style + " qtitle='Data:' qtip='New'>" + value + "</span>");
} else {
sb.appendHtmlConstant("<span " + style + ">" + value + "</span>");
}
}
});
cc1 = new ColumnConfig(propsAnswer.complexName(), 300, "Q/A");
cc1.setComparator(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
Answer a1 = null;
Answer a2 = null;
for (Answer a : storeAnswer.getAll()) {
if (a.getGroupName().equals(o1)) {
a1 = a;
break;
}
}
for (Answer a : storeAnswer.getAll()) {
if (a.getGroupName().equals(o2)) {
a2 = a;
break;
}
}
if (a1 == null || a2 == null) {}
return a1.compareTo(a2);
}
});
List<ColumnConfig<Answer, ?>> l = new ArrayList<ColumnConfig<Answer, ?>>();
l.add(sm.getColumn());
l.add(answerCol);
l.add(cc1);
ColumnModel<Answer> cm = new ColumnModel<Answer>(l);
GroupingViewDefaultAppearance v = new GroupingViewDefaultAppearance();
v.setHeaderTemplate(new GroupHeaderTemplate<Answer>() {
@Override
public SafeHtml renderGroupHeader(GroupingData<Answer> groupInfo) {
String s = (String) groupInfo.getValue();
int p1 = s.indexOf("/");
String s1 = s.substring(0, p1).trim();
String s2 = s.substring(p1 + 1).trim();
return SafeHtmlUtils.fromTrustedString("<span style='font-weight:bold;color:blue;'>" + s1 + "</span>" + " / "
+ "<span style='font-weight:bold;color:black;'>" + s2 + "</span>");
}
});
viewAns = new GroupingView<Answer>(v);
viewAns.setShowGroupedColumn(false);
viewAns.setForceFit(true);
viewAns.setSortingEnabled(true);
gridAnswer = new Grid<Answer>(storeAns, cm) {
@Override
protected void onAfterFirstAttach() {
super.onAfterFirstAttach();
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
fillAnsStore();
}
});
}
};
gridAnswer.setView(viewAns);
gridAnswer.setBorders(true);
gridAnswer.getView().setStripeRows(true);
gridAnswer.getView().setColumnLines(true);
gridAnswer.setLoadMask(true);
gridAnswer.setLoader(loaderAerp);
gridAnswer.setSelectionModel(sm);
gridAnswer.getSelectionModel().setLocked(true);
gridAnswer.getView().setForceFit(true);
new QuickTip(gridAnswer);
StringFilter<Answer> ansFilter = new StringFilter<Answer>(propsAnswer.name());
GridFilters<Answer> filters = new GridFilters<Answer>();
filters.initPlugin(gridAnswer);
filters.setLocal(true);
filters.addFilter(ansFilter);
viewAns.groupBy(cc1);
program select rows:
Code:
service.getSelAnswers(airport.getId(), new AsyncCallback<List<Answer>>() {
@Override
public void onSuccess(List<Answer> answersSel) {
storeAnswerSel.replaceAll(answersSel);
List<Answer> ansSelList = new ArrayList<Answer>();
for (Answer answer : answersSel) {
Answer ans = null;
try {
ans = storeAns.findModelWithKey(String.valueOf(answer.getId()));
} catch (Exception e) {}
if (ans != null) {
ans.setAgent(answer.getAgent());
ansSelList.add(ans);
}
}
gridAnswer.getSelectionModel().select(ansSelList, false);
}
@Override
public void onFailure(Throwable caught) {}
});
I Logging select row:
service.logString("sm onSelectChange: "+ model.getId() , cl);
when exists: viewAns.groupBy(cc1);
we have log:
Code:
03.11.2015 13:07:34.541 [ProtectServiceImpl] - sm onSelectChange: 4
03.11.2015 13:07:35.684 [ProtectServiceImpl] - sm onSelectChange: 8
03.11.2015 13:07:36.965 [ProtectServiceImpl] - sm onSelectChange: 9
03.11.2015 13:07:38.253 [ProtectServiceImpl] - sm onSelectChange: 10
03.11.2015 13:07:39.566 [ProtectServiceImpl] - sm onSelectChange: 11
03.11.2015 13:07:40.807 [ProtectServiceImpl] - sm onSelectChange: 13
03.11.2015 13:07:42.116 [ProtectServiceImpl] - sm onSelectChange: 19
03.11.2015 13:07:43.314 [ProtectServiceImpl] - sm onSelectChange: 21
03.11.2015 13:07:44.488 [ProtectServiceImpl] - sm onSelectChange: 22
03.11.2015 13:07:45.621 [ProtectServiceImpl] - sm onSelectChange: 27
03.11.2015 13:07:46.763 [ProtectServiceImpl] - sm onSelectChange: 30
03.11.2015 13:07:47.935 [ProtectServiceImpl] - sm onSelectChange: 32
03.11.2015 13:07:49.110 [ProtectServiceImpl] - sm onSelectChange: 35
03.11.2015 13:07:50.277 [ProtectServiceImpl] - sm onSelectChange: 36
..............................
each row select ~ 1.5 sec
when i comment (grid without group)
// viewAns.groupBy(cc1);
we have log:
Code:
03.11.2015 13:13:04.177 [ProtectServiceImpl] - sm onSelectChange: 8
03.11.2015 13:13:04.177 [ProtectServiceImpl] - sm onSelectChange: 4
03.11.2015 13:13:04.177 [ProtectServiceImpl] - sm onSelectChange: 9
03.11.2015 13:13:04.181 [ProtectServiceImpl] - sm onSelectChange: 11
03.11.2015 13:13:04.181 [ProtectServiceImpl] - sm onSelectChange: 19
03.11.2015 13:13:04.181 [ProtectServiceImpl] - sm onSelectChange: 13
03.11.2015 13:13:04.181 [ProtectServiceImpl] - sm onSelectChange: 10
03.11.2015 13:13:04.181 [ProtectServiceImpl] - sm onSelectChange: 21
03.11.2015 13:13:04.185 [ProtectServiceImpl] - sm onSelectChange: 30
03.11.2015 13:13:04.185 [ProtectServiceImpl] - sm onSelectChange: 27
03.11.2015 13:13:04.185 [ProtectServiceImpl] - sm onSelectChange: 32
03.11.2015 13:13:04.185 [ProtectServiceImpl] - sm onSelectChange: 22
03.11.2015 13:13:04.185 [ProtectServiceImpl] - sm onSelectChange: 35
03.11.2015 13:13:04.185 [ProtectServiceImpl] - sm onSelectChange: 36
03.11.2015 13:13:04.187 [ProtectServiceImpl] - sm onSelectChange: 37
....................
GXT 3.1.1
browser: Chrome