在SmartGWT中,在获取数据网格记录时是否必须返回隐藏列?

时间:2014-04-11 19:16:38

标签: datagrid smartgwt

我最近加入了一个使用Smart GWT并且对图书馆经验很少的开发团队。我们在应用程序中有几个datagrids,它们提供了大量的列(最多80个),但是,默认情况下,这些列中的大多数都设置为隐藏。显然,SmartGWT会请求每次调用数据库中的所有列(初始加载,分页等),即使大部分数据未显示给用户。我理解这里的逻辑是当用户选择使用"列选择器"显示以前隐藏的列时允许快速更新。上下文菜单选项,但在这些网格的情况下,我更倾向于使用现在显示的列重新选择数据,然后承担可能未显示的数据的每个加载的成本。有什么建议吗?

1 个答案:

答案 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);