SmartGWT4的ShowCase上有个很好的例子,就是Live Grid。它可以在比较大数据量(例如上千条数据)的情况下保证一个非常好的Grid性能,像常规情况,一次下载上千条数据界面早就卡死动不了了。SmartGWT采用了一个很好的办法,让数据缓存在本地,然后再滚动时动态的渲染。
于是。。。除了日志数据太大几个功能以外,其他很多的查询数据的方法终于可以告别那该死的分页了。。。一次下载全部数据到本地,So Happy....
然而,鄙人参照官方的例子做了点小修改,却导致每次都是数据完全下来,一次渲染几百个数据。。。My God
我是这样使用的:
ListGrid listGrid = new ListGrid();
listGrid.setFields(fields);
listGrid.setShowHeaderContextMenu(false);
listGrid.setShowHeaderMenuButton(false);
listGrid.setHeaderAutoFitEvent(null); //disable header double click to fit
listGrid.setCanResizeFields(true);
listGrid.setAutoFetchData(true);
listGrid.setShowAllRecords(false);
listGrid.setDataSource(dataSource);
articleInfListGrid.setData(recordList.toArray(new ListGridRecord[recordList.size()]));
无意间,在折腾其他功能突然又可以动态渲染了!于是欣喜若狂。一段段代码排查,最后发现是这段代码解决了这个BUG。
listGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX); //勾选选择
listGrid.setSelectionType(SelectionStyle.SINGLE);
也就是说,SmartGWT 4的Live Grid在默认的SelectionStyle.SIMPLE情况下,会导致无法动态渲染!
这个必须得记下!不知道SmartGWT Group发现这个问题没有,希望能早点解决。暂且就先带上个checkBox使用Live Grid好了,无伤大雅
P.S. SmartGWT的Show case已经是4.1了,但是官方的还是4.0,期待4.1中