当前位置: 首页 > 工具软件 > SmartGWT > 使用案例 >

SmartGWT 4.0 Live Grid 使用setData的BUG

许远航
2023-12-01


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

然后把整个Record[]塞了进去

		articleInfListGrid.setData(recordList.toArray(new ListGridRecord[recordList.size()]));

最终结果是。。居然每次都是完全渲染了。找遍了Google,没有一个人遇到这样的情况(难道大家的Live Grid都不用SetData?)


无意间,在折腾其他功能突然又可以动态渲染了!于是欣喜若狂。一段段代码排查,最后发现是这段代码解决了这个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中

 类似资料: