2008-07-09
GT-Grid 与后台(j2ee)结合进行CRUD的完整示例
关键字: ajax, grid
GT-Grid 与后台(j2ee)结合进行CRUD的完整示例
虽然这个示例发布了 而且内含GT-Grid 1.0正式版, 但是我不打算作为正式版本发布.
因为之前承诺的几点 有些还有没有做到:
1 提供一个和ext不一样的皮肤
2 提供更详细的文档和示例
等上面两点做好了 我再正式发布.
=================================
言归正传.
这个例子 主要演示了 gt-grid与后台结合的方法.
请大家重点看action 里是如何从客户端取数据 以及如何向客户端送数据的
而其他地方 例如action如何实现的 , dao层是如何实现的 等等不是大家要看的重点.
dao层只要能返回一个 数据集合 并且这个集合能够转换成json字符串
那么dao层怎么实现 完全按你自己的意愿来.
这个示例中提供了一个 GridServerHelper工具类, 建议建议看看这个类的实现方法
这样能更好的理解 gt-grid和后台交互的方式以及原理.
整个示例的后台代码 我没有使用任何第三方框架 所以难免粗糙 还请大家海涵.
=========================================
关于文档:
JE的wiki频道还是不能达到我期望的样子,所以在JE wiki写文档的计划暂时搁置.
改为在blog里写 不过还没写呢.
以后争取每天写一篇.
==========================================
运行步骤
1 部署后, 运行 startdb.bat 启动数据库
* h2manager.bat是一个h2db提供的数据库管理程序.
2 启动web应用
3 在浏览器里输入 http://127.0.0.1:8080/gtdemo/index.do
(地址根据实际情况而定),进入"示例列表"页面
4 点击那个 列表里的 第一项的 链接 ,
之后会进入第一个也是目前为止唯一一个和后台结合的示例页面
5 然后就可以对列表进行 增删改 等操作.
=============================================
注意: 附件并不是一个直接部署的war包 而是一个eclipse项目
不过我相信有经验的朋友可以很轻易的就部署成功
下载请去:
http://forum.springside.org.cn/viewthread.php?tid=2924&extra=page%3D1
问: 为什么把附件要放到 springside 网站??
答: 简单点说,两个字"致敬". 具体点说... 等我改天另起一篇blog吧
虽然这个示例发布了 而且内含GT-Grid 1.0正式版, 但是我不打算作为正式版本发布.
因为之前承诺的几点 有些还有没有做到:
1 提供一个和ext不一样的皮肤
2 提供更详细的文档和示例
等上面两点做好了 我再正式发布.
=================================
言归正传.
这个例子 主要演示了 gt-grid与后台结合的方法.
请大家重点看action 里是如何从客户端取数据 以及如何向客户端送数据的
而其他地方 例如action如何实现的 , dao层是如何实现的 等等不是大家要看的重点.
dao层只要能返回一个 数据集合 并且这个集合能够转换成json字符串
那么dao层怎么实现 完全按你自己的意愿来.
这个示例中提供了一个 GridServerHelper工具类, 建议建议看看这个类的实现方法
这样能更好的理解 gt-grid和后台交互的方式以及原理.
整个示例的后台代码 我没有使用任何第三方框架 所以难免粗糙 还请大家海涵.
=========================================
关于文档:
JE的wiki频道还是不能达到我期望的样子,所以在JE wiki写文档的计划暂时搁置.
改为在blog里写 不过还没写呢.
以后争取每天写一篇.
==========================================
运行步骤
1 部署后, 运行 startdb.bat 启动数据库
* h2manager.bat是一个h2db提供的数据库管理程序.
2 启动web应用
3 在浏览器里输入 http://127.0.0.1:8080/gtdemo/index.do
(地址根据实际情况而定),进入"示例列表"页面
4 点击那个 列表里的 第一项的 链接 ,
之后会进入第一个也是目前为止唯一一个和后台结合的示例页面
5 然后就可以对列表进行 增删改 等操作.
=============================================
注意: 附件并不是一个直接部署的war包 而是一个eclipse项目
不过我相信有经验的朋友可以很轻易的就部署成功
下载请去:
http://forum.springside.org.cn/viewthread.php?tid=2924&extra=page%3D1
问: 为什么把附件要放到 springside 网站??
答: 简单点说,两个字"致敬". 具体点说... 等我改天另起一篇blog吧


评论
可惜的是这个时间控件不开源
www.my97.net/dp/demo
http://code.google.com/p/kimsoft-jscalendar/
ZeroCalendar
http://www.zerocrm.cn/declare.htm
Bug1的使用场景是,在过滤条件中增加了一个条件,该条件查询结果为空没有数据(这是正常的),然后在进入过滤页面,删除掉该查询结果点击确定时,列表中还是显示空没有数据(这就不正常)。该bug也不是经常出现,还有待重复测试一下。
顺便,如果fins兄修改了这两个缺陷,能否把修改后的版本发给我一份,我想继续评估测试一下,以便在项目中使用。谢谢
bug 2 已经修复
bug 1 没有重现 :(
能不能把你那边的场景说的具体点?? 谢谢
1、在过滤时,添加了过滤条件后执行过滤操作,然后再进入过滤页面,清除所有过滤条件,点击确定时,列表中数据没有显示出来,只有点击刷新后,数据才出来。
2、保存新增或修改的数据时,如果服务器端返回了错误提示,并且返回操作是否成功返回false时,弹出对话框中有个action字符,我没有在错误提示中输入过,列表一直停留在'操作进行中,请稍后'上,只有刷新页面后才能显示正常。
以上两个问题,请fins兄测试并修改一下吧,我正好在用你的这个GT-Grid,说实话该组件很好用,谢谢你的辛勤工作!!
我也正在考虑如何能找一个更好的 日期组件 来代替他
希望大家帮忙推荐 谢谢了
或者
不知道有没有哪个日期组件的作者愿意和我合作 ???
不知道性能怎么样
怎么才能配置服务端排序
没明白你的意思 GT-GRID是一个 与后台无关的纯前台ajax组件
没有任何数据库版.
我提供的这个例子 只是一个 在j2ee里使用gtgrid的参考实现
不知道 你希望得到的是什么
loadUrl : APP_PATH+'/listatom.action' 这样定义对吗(Stuts2)?
如果把APP_PATH去掉,就会报找不到Action定义(实际这个listatom是有定义的),弄不明白为什么?
你这个问题和gt-grid无关了吧??
struts我也没用过
不过 我相信 不管是什么 mvc框架 总是能取得request response的
如果取不到 肯定也能取到 request.getParameterMap 或它的克隆体
你再google一下 或者是问一下别人呗.
另外 那个 GridServerHandler 只是一个参考实现.
如果你确实无法直接操作request/response的话
你可以结合实际情况自己来 写一个类似的东西
另外 此贴不应该变成提问贴
欢迎你去圈子 或者是问答频道提问 谢谢
loadUrl : APP_PATH+'/listatom.action' 这样定义对吗(Stuts2)?
如果把APP_PATH去掉,就会报找不到Action定义(实际这个listatom是有定义的),弄不明白为什么?
都是没有文档惹的祸
自定义 column的 renderer
renderer=function(value ,record,columnObj,grid,colNo,rowNo){ return this.editor.getDisplayValue(value); }第二个参数 就是 record
那么你可以随意的拼一个链接的html代码了
renderer : function(v,record,columnObj,grid,colNo,rowNo){ return return '<a href="'+ APP_PATH +'/'+v+'?name='+record.name+'" >'+v+'</a>'; }如果要用ajax提交
那么你可以在 grid 的 onClickCell 里来做
onClickCell : function( value, record , tdObj ,trObj , colNO, rowNO,colObj,event){ // 一个函数 你自己随意写 record.name .... }其中value就是你点击的单元格对应的 数据, record就是你点击的单元格对应的记录
没太看明白,JS水平太低,能不能给一个相对完整的例子,关于这个问题的?谢谢!!
都是没有文档惹的祸
自定义 column的 renderer
renderer=function(value ,record,columnObj,grid,colNo,rowNo){ return this.editor.getDisplayValue(value); }第二个参数 就是 record
那么你可以随意的拼一个链接的html代码了
renderer : function(v,record,columnObj,grid,colNo,rowNo){ return return '<a href="'+ APP_PATH +'/'+v+'?name='+record.name+'" >'+v+'</a>'; }如果要用ajax提交
那么你可以在 grid 的 onClickCell 里来做
onClickCell : function( value, record , tdObj ,trObj , colNO, rowNO,colObj,event){ // 一个函数 你自己随意写 record.name .... }其中value就是你点击的单元格对应的 数据, record就是你点击的单元格对应的记录