我正面临一个ListGrid过滤器问题。我面临的问题是当我在ListGrid上应用任何过滤器来编辑任何ListGridRecord时,只要我从listgrid的过滤器中删除过滤后的文本,就会删除已编辑的记录。
当我尝试通过手动删除过滤器以及使用listgrid.clearCriteria()自动删除过滤器时从listgrid获取记录。然后,我的所有更改都将被删除。 希望我能够理解。这是我正面临的困境。如果您需要了解任何进一步的细节,请告诉我。在此先感谢
答案 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));
}