我最近加入了一个使用Smart GWT并且对图书馆经验很少的开发团队。我们在应用程序中有几个datagrids,它们提供了大量的列(最多80个),但是,默认情况下,这些列中的大多数都设置为隐藏。显然,SmartGWT会请求每次调用数据库中的所有列(初始加载,分页等),即使大部分数据未显示给用户。我理解这里的逻辑是当用户选择使用"列选择器"显示以前隐藏的列时允许快速更新。上下文菜单选项,但在这些网格的情况下,我更倾向于使用现在显示的列重新选择数据,然后承担可能未显示的数据的每个加载的成本。有什么建议吗?
答案 0 :(得分:0)
请查看DataSource#setDropExtraFields()
使用DSRequest#setOutputs()从数据库中获取选定的列。
示例代码:
StringBuilder outputs=new StringBuilder();
for (ListGridField field : grid.getFields()) {
if (grid.fieldIsVisible(field.getName())) {
outputs.append(",").append(field.getName());
}
}
DSRequest dsRequest=new DSRequest();
dsRequest.setOutputs(outputs.substring(1));
grid.fetchData(new Criteria(), new DSCallback() {
@Override
public void execute(DSResponse dsResponse, Object data, DSRequest dsRequest) {
...
}
}, dsRequest);