1

我扩展了 ListGrid 以创建按搜索类型分组的已保存搜索列表,无论是公共的还是私人的。此列表通过标准 SmartGWT 数据源填充。

此外,我想在此列表中添加一组历史搜索,用户可以在他们逐个会话创建搜索时使用这些搜索(即,用户创建新搜索 - 直到他们关闭浏览器,该搜索将显示在搜索列表中,在“历史搜索”分组下)。

长话短说,我希望能够从两个单独的源填充 ListGrid - 从已经存在的数据源和理想情况下从保存在内存中的 RecordList。我尝试了类似的东西:

@Override
public void fetchData() {
    invalidateCache();
    discardAllEdits();
    super.fetchData();
    setCanEdit(true);
    for(Record r : histSearches.toArray()) {
        startEditingNew(r);
        endEditing();
    }
    setCanEdit(false);
    markForRedraw();
};

虽然这段代码确实被执行了,但它并没有以任何方式执行我希望它执行的功能。有人对如何执行此功能有任何建议吗?任何帮助将不胜感激。

4

1 回答 1

2

如果您调用 DataSource.fetchData(),在回调中您可以将所选数据作为 RecordList 获取。然后,您可以通过 recordList.add() 添加每个会话的搜索,并通过 setData() 将修改后的 RecordList 提供给 ListGrid。

顺便说一句,公共 wiki 上还有一篇文章显示了保存搜索的示例实现(尽管与您想要的不同):

http://wiki.smartclient.com/display/Main/Saved+Search+%28Smart+GWT%29

于 2012-09-29T06:00:19.687 回答