当前位置: 代码迷 >> Web前端 >> SmartGWT 里动态DataSource的兑现思路
  详细解决方案

SmartGWT 里动态DataSource的兑现思路

热度:478   发布时间:2012-11-23 00:03:29.0
SmartGWT 里动态DataSource的实现思路

这个思路其实是为了解决title 中文问题的时候发现的。当时想着,实在不行我就自己做

一个DataSource的定义。SmartGWT 里,DataSource就是它的元数据核心。

这里,DataSource实际上有两个,

其一是客户端的 com.smartgwt.client.data.DataSource,这部分是开源的,可以自己随意创建。

另一个是服务器端的 com.isomorphic.datasource.DataSource, 这个是SmartGwtEE 里面的

内容,非开源的,而且只能在Server端使用,不能在客户端使用。

?

而我想做的动态DataSource,指的是在客户端定义一个DataSource,这里都可以用java类来描述

各个Field,包括类型什么的。而在服务端,根据客户端定义的DataSource自动生成一个服务端的

DataSource,这样就可以根据需要进行灵活的定义,而且所有的定义都通过java代码来进行,又可以

进行编译期检查,还可以绕过中文乱码问题。

?

当然,现在中文乱码问题解决了,这个需求就显得不那么迫切。把思路记录一下,以后有需要的时候再

来用这个思路实现动态的DataSource。

?

1. 在server.properties里面,定义缺省的 datasource repo:

datasources.repo.default: org.simon.xxx.server.MyDSRepo

?

2. MyDSRepo 继承自FileSystemDSRepo,这个实际上是SmartGWT 缺省的DSRepo

?

3. 在public DataSource loadDS( String dsName) 方法当中,判断是不是动态的DataSource ,

如果是,那么根据客户端的DataSource Class是否有变化,来决定是否生成一个新的 ds.xml文件,

然后还交给 super来装载。

?

如何判断客户端的DataSource Class是否有变化,是个问题。当然也可以不生成ds.xml文件,但是这样

就不能利用 DSRepo的cache机制了。具体的实现,等需要时再说,目前没碰到这种需求,但是不得不说,

SmartGwtEE还是为扩展留下了各种机制的。

?

1 楼 董瑞龙 2010-04-08  
你好 请问SmartGWT的Grid怎么实现数据分页啊?我查了Api他有个setDataPageSize();方法,我试验了,但是不起作用。
请指不吝指教,谢谢!
2 楼 SimonLei 2010-04-08  
SmartGWT 里的 ListGrid 缺省就是实现分页的。
你用滚动条拉动的时候,它再去取需要的数据。
  相关解决方案