Smartgwt Listgrid过滤器问题

时间:2012-01-12 08:44:22

标签: smartgwt

我正面临一个ListGrid过滤器问题。我面临的问题是当我在ListGrid上应用任何过滤器来编辑任何ListGridRecord时,只要我从listgrid的过滤器中删除过滤后的文本,就会删除已编辑的记录。

当我尝试通过手动删除过滤器以及使用listgrid.clearCriteria()自动删除过滤器时从listgrid获取记录。然后,我的所有更改都将被删除。 希望我能够理解。这是我正面临的困境。如果您需要了解任何进一步的细节,请告诉我。在此先感谢

3 个答案:

答案 0 :(得分:2)

我找到了解决这个问题的方法。实际上,当我从listgrid中删除过滤后的文本时,listgrid会尝试默认从服务器获取数据。通过设置属性setDataFetchMode(FetchMode.LOCAL)可以防止listgrid在删除过滤后的文本时从服务器获取数据。感谢所有为我提供帮助的人。

答案 1 :(得分:1)

关于记录消失,请参阅SmartGWT常见问题解答中的这个问题:

http://forums.smartclient.com/showthread.php?t=8159#aGrid

在clearCriteria()和更改消失之后,不清楚你是如何进行这些更改的,但如果更改被错误地应用并且clearCriteria()只是从服务器加载新记录,则更改可能会消失。请参阅网格编辑概述以了解如何存储记录及其编辑(“编辑值”):

http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/docs/Editing.html

答案 2 :(得分:0)

smartgwt 6,我看到了更好的方法,你可以参考展示

如果您使用的是smartgwt 3或4,则可以尝试以下操作 Grid.java:

    this.addFilterEditorSubmitHandler(new FilterEditorSubmitHandler(){

        @Override
        public void onFilterEditorSubmit(FilterEditorSubmitEvent event) {
             filterByEditor(event.getCriteria());

             //cancel the event to avoid the server side fetch  
             event.cancel();
        }

    });

DataSource.java

获取数据后,调用以设置初始记录集。 zzzzzDataSrc.setCacheData(gridRecs);

public void filterByEditor(Criteria cr){

    AdvancedCriteria criteria =     
            new AdvancedCriteria(FLD_NM, OperatorId.STARTS_WITH, cr.getAttributeAsString(FLD_NM)) ; 
    //initialize with the complete set of rows 
    this.setData(this.getDataSource().getCacheData());
    //filter using the criteria
    this.setData(this.getDataAsRecordList().findAll(criteria)); 

}