2012-01-12 82 views
2

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

当我尝试手动去除过滤器以及自动使用listgrid.clearCriteria后能得到从listgrid记录()。然后,我的所有更改都被删除。 希望我能够理解。这是我一直在面对的时间。如果你需要了解更多细节,请告诉我。由于提前

回答

2

我发现了解决这个问题。实际上,当我从listgrid中删除过滤的文本时,listgrid默认尝试从服务器获取数据。通过设置属性setDataFetchMode(FetchMode.LOCAL)防止listgrid从服务器获取数据当u除去的滤渣中的文本。感谢所有向我提供帮助的人。

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

+0

喜@Charles ......有一两件事我想提一提你的是,当我申请过滤器在第一次那么只有所有的变化离开。否则,第二次连续使用过滤器。变化没有消失。请告诉我问题或给我一些提示。谢谢 – ankit 2012-01-13 09:44:08

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(); 
     } 

    }); 

数据源的.java

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


公共无效filterByEditor(标准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)); 

}