`

GT-Grid 1.0 基础教程(七)

阅读更多
GT-Grid 1.0 基础教程(七)

教程说明:
这是一个告诉大家如何快速的利用GT-Grid开发列表的基础教程.以后会推出"高级教程".
查看其他教程,以及最新版本信息,请点击这里

第七章: 可编辑列表 之 删除记录 以及 数据提交

这章将主要讲解,如何删除记录 如何将编辑过的数据提到给服务端, 以及服务端要如何取得这些数据.
首先还是老套路,将"mydemo6.html"另存为"mydemo7.html".


=========================================


要将数据提交给服务端 首先要 指定grid提交数据的"目的地", 就是 saveURL, 同时还要在工具栏上添加一个保存按钮.



var gridConfig={
	/* ... 略去其他属性设置 ...*/
	saveURL : 'studentsSave.servlet',
	toolbarContent : 'nav | goto | pagesize | reload | save | state' 

};


toolbarContent中的 save 即标示 保存按钮
saveURL 指向的是后台对应的服务.

页面的改动只有这两处.
下面需要编写 服务端了, 在编写之前, 首先我们要了解, 客户端提交给服务端的数据格式和内容.

客户端提交的json串如下.
{
	action	 : 'save',	// 执行的操作.保存数据的操作为 save.

	insertedRecords : [
		/* ... 新增的记录. 是一个数组,数组的每个元素为一条记录(json-object) 下同... */
		 { no : 51 , name :'zxcx', age : 12, gender : 'M' , english : 26.5 , math :92 },
		 ... ...
	
	],
	updatedRecords : [
		/* ... 修改的记录 ... */
		{ no : 3 , name :'ccc', age : 12, gender : 'F' , english : 53   , math :62 },
		 ... ...
	],
	deletedRecords : [
		/* ... 删除的记录 ... */
		{ no : 2 , name :'bbb', age : 11, gender : 'F' , english : 89   , math :87 },
		... ...

	]
}


这些数据同样是以json串的形式一次性传给服务端.参数名依然是"_gt_json"
服务端就可以通过 "_gt_json" 来把这些数据从request中取出.( request.getParameter("_gt_json"); )
然后借助第三方工具来将json串 转换为 java对象.
本章可参考第5章,一并阅读.

在本例中, 将只有 action 和 updatedRecords 数据.

服务端得到 updatedRecords 对应的记录后, 就可以在dao里执行相应的操作了.



=========================================


数据的删除,也是一种很重要的操作. 要实现删除功能, 只需在 toolbarContent 里加入 "del".

var gridConfig={
	/* ... 略去其他属性设置 ...*/
	saveURL : 'studentsSave.servlet',
	toolbarContent : 'nav | goto | pagesize | reload | del | save | state' 

};


这时候预览页面 会看到多了一个"-"按钮, 该按钮即为删除按钮.
选中一行后, 点击删除按钮, 该记录将被打上"删除"标记.(灰色+删除线)
如果后悔了,或者是发现删除错了, 那么可以再次选中此行,然后再点删除按钮, 该行将会被回复.
(这个功能只有在 按save(保存)按钮之前才有效.

加入删除功能后, 提交的数据里 deletedRecords 下面就会有删除的记录信息.

然后还是 json串--->java对象的转换. 这里就不再累述.



=========================================


保存时有数据提交,自然也会有数据返回.
返回的数据同样是一个json串, 里面记载了 保存是否成功以及异常信息. json串的格式如下:

{
	success : true  , /* true/false */
	exception : "...异常信息..."
}


success 为false时 代表保存操作失败, 不设置或者是设置为其他值都表示成功.
失败时, 前台会弹出提示,提示里会显示 exception 对应的字符串.



=========================================



这章就先到这里, 内容少了点, 但是关于列表关键的核心最重要的内容, 我相信有一定使用纯ajax控件经验的人,应该已经可以独立开发出一个列表了.

第四五六七 4章讲解的内容更注重原理,而非实例,所以需要大家更多的动手实践.

欢迎大家就实践中出现的问题和不解与我进行交流.

这4章对应的"与服务端结合的完整示例" 将会在正式版发布时提供给大家.

同时 我也需要大家的帮助来进一步完善教程.

在这里对所有关注和使用GT-Grid的朋友说声 谢谢.


分享到:
评论
44 楼 fzt023342 2009-02-01  
HIHI,请问下,为什么选中了一些删除的记录,翻页后,又回到原来那页,删除状态就不见了,但按保存时,它是存在那些删除记录的。这个怎样解决呀?
43 楼 itlieying 2008-08-26  
当没有修改记录时,如果 直接点保存,会提示“没有记录被修改,无需保存”;
当修改记录出现异常后,点组件里的刷新后,呈现的状态是无修改记录的状态。

之前谈过的问题就在于此时点保存,仍有之前的异常弹出,而没有提示“没有记录被修改,无需保存”
42 楼 itlieying 2008-08-26  
如果保存成功getException() 值是空时,此时就不会弹出异常对话框。但是刷新Gt-grid里头的刷 新按钮后再点保存仍然会弹出之前的异常。
41 楼 fins 2008-08-26  
getException() 怎么写的? 会不会出现总是 不为null的情况??
40 楼 itlieying 2008-08-26  
将保存的异常放入getException当中输出来,在后台servlet程序是这样子的:
....
if(getException!=null) {
PrintWriter out = response.getWriter();
out.print("{success : false , exception : '"+ getException() + "'}");
}
return null;
39 楼 fins 2008-08-26  
这个问题我这的版本没有重现

其实 我客户端从来没有存放过异常信息

你能不能看看是不是你那边后台总是送异常信息给前端了?会不会是你那里的错误??

如果你哪里确定没有问题 能不能把你的jso代码发来看看
38 楼 itlieying 2008-08-26  
本人觉得,如果点toolbarContent下的刷新,如果能把异常的信息清空,那么这个问题就有能解决
37 楼 fins 2008-08-26  
你说的这个是可能是系统bug

我确认后 会在下一版本修正 谢谢
36 楼 itlieying 2008-08-22  
问题1:修改记录A后,处理A的异常信息设置为E1,保存时有提示异常信息E1。点GT-GRID的刷新按钮后,再点保存,又会有异常信息E1提示,而没有提示“没有记录被修改无需保存”


问题2:修改记录A后,处理A的异常信息设置为E1,保存时有提示异常信息E1. 再修改记录B,处理B的异常信息设置为E2,保存时确同时提示了E1和E2的异常信息。

看来GT-GRID是把上次异常的信息保存起来而没有及时的清除,只有刷新页面才能清除gt-grid里头的异常信息,


请问有没有办法不刷新页面,点GT-grid刷新后能清空异常信息?

35 楼 fins 2008-08-06  
下一个版本会支持
34 楼 itlieying 2008-08-06  
fins,
exception使用时有没有支持函数回调,如果有,怎么实现?
希望用户点保存后,把保存处理后有异常的信息显示在页面某<div>里头,而不是以弹出对话框的形式来提示
33 楼 fins 2008-08-05  
exception支不支持后台传递参数 :
你的意思是不是 exception是否能够从后台得到?
可以的 示例里面有的 文档里也有说明

场景:...
从你的描述中 我觉得 把数据都传递上去是更合理的做法啊.
我没明白 把一条记录都传递上去 对你那边有什么影响??

我之前说过了 对于update 操作而言
只改一个字段 和修改多个字段 效果是一样的
记录:
no = 1 , name = abc  age = 30


如果你只修改了 name 改为了  xyz , 那么后台执行的sql 类似下面的情况

UPDATE student_info SET name='xyz', age=30  WHERE no=1


如果你只修改了 age 改为了  28, 那么后台执行的sql 类似下面的情况
UPDATE student_info SET name='abc', age=28  WHERE no=1

有什么分别啊?

没必要 修改name 时 执行
UPDATE student_info SET name='xyz' WHERE no=1
修改age 时 执行
UPDATE student_info SET age=28  WHERE no=1
吧?

多update 几个字段 并不会有问题的

32 楼 itlieying 2008-08-05  
对了,exception支不支持后台传递参数?
31 楼 itlieying 2008-08-05  
场景:显示学生基本信息的表格,其中有大字段“家庭地址”,“获奖情况”等,如只改甲同学家庭地址,而其他字段不变;或只改获奖情况,gt-grid如果能以JSON形式传递给后台单元格记录的话,同时记录单元格位置,估计这个就可以搞得定
30 楼 fins 2008-08-05  
暂时不支持

目前的做法是以update数据为出发点的

对于一条记录而言,只update修改过字段的 和update所有字段 几乎没有区别

所以这这个地方我的设计就从简了

想知道一下 你为什么非要只得到修改过的数据 这个需求来源于什么应用场景呢?
我看看是否可以提供一些方法来满足你的场景
29 楼 itlieying 2008-08-05  
当对表格中某单元格内容进行修改后,GT-GRID以Json形式传递给后台,传递的是一整条记录,可是,如果,我只想在保存时只传递我做修改的那个单元格记录,而同行中其它没做修改的单元格记录可以不传给我。。。有什么办法可以实现?
28 楼 fins 2008-08-01  
谢谢你的建议 已经修正
选中的删除行 为蓝色背景+删除线
27 楼 ernest100 2008-08-01  
有一个小建议:
删除选中后效果很棒,但是如果当前有多个连续删除行,我想要选择一个删除状态的行进行反悔操作,这时候删除状态的行的选中没有明显的区别,我无法确认是否选中了删除状态的行。
26 楼 fins 2008-07-31  
哦 这种"多人共同操作同一数据时 造成的冲突是难以避免的
也是B/S系统的一大特点

我即使做到"只提交修改的" 也无法避免 "最终的数据,违背了某些人的意愿"这一情况的发生
所以 我的做法就是"不去考虑" ,因为考虑不了那么完全.

不过还是要说那句话, 其实是可以做到的, 因为我记录了所有被修改的值.
我记录的目的其实 是为了做 UNDO (该功能还没有完成)
如果此需求的客户众多, 我会考虑开发相关接口的
谢谢你的建议   (你的建议总是很专业 非常感谢 )


顺便说一下我 对于新功能 新需求的一个态度.

我是否提供一个功能, 通常从以下角度来衡量(排名不分先后):

我是否有能力做出来
是否有成功的范例
要编写的代码量,
带来的潜在风险,
带来的测试用例数目,
有此需求的客户数量与"全部客户数量"的比值
对于有此需求的客户而言,该功能的重要程度(必须有 最好是有, 可有可无...)
该功能是否能够成为显著的亮点(可以拿来炫耀 嘿嘿)
该功能开发出来之后 是否能够有较好的效果(是否适合用js实现...)
该功能的易用性

25 楼 QuakeWang 2008-07-31  
fins 写道
不能
我没太明白你的意思

把修改过的记录全部传上去 后台update的时候 会有什么问题??

比如用户A修改了一条记录的姓名属性
而用户B修改了同一记录的年龄属性

这个时候如果A先提交,B后提交,那么B提交的数据里面有未改动的姓名,就会覆盖掉A之前做的改动

如果有办法只提交改动的数据,就可以避免这个问题了

相关推荐

    GT-Grid 1.0 基础教程

    本基础教程旨在帮助初学者快速理解并掌握GT-Grid 1.0 的核心概念和基本操作,以便在实际项目中应用。下面将详细阐述GT-Grid 1.0 的关键知识点。 一、GT-Grid 1.0 概述 GT-Grid 1.0 是一个基于Java开发的分布式计算...

    GT-Grid 1.0 基础教程(一)转载

    ### GT-Grid 1.0 基础教程(一)——纯客户端只读列表开发详解 #### 一、教程背景与目标 本教程旨在帮助初学者快速掌握如何使用GT-Grid开发纯客户端只读列表的基本技能。对于那些对Ajax技术下的列表组件不太熟悉的...

    gt-grid 基础教程

    **gt-grid基础教程** 在网页开发中,数据的展示往往是不可或缺的部分,特别是在处理大量结构化信息时。`gt-grid`是一款由"胖哥"开发的高效、功能丰富的表格组件,专为页面展示设计,旨在帮助开发者更便捷地构建数据...

    gt-grid的一个例子

    在这个“gt-grid的一个例子”中,我们将深入探讨如何使用`gt-grid`的基本功能,并通过实际代码示例来理解其工作原理。 首先,`gt-grid` 提供了灵活的数据绑定机制,可以方便地将后台数据源与前端表格进行对接。在...

    GT-Grid 教程示例

    GT-Grid 教程示例 GT-Grid 教程示例GT-Grid 教程示例GT-Grid 教程示例

    gt-grid demo 源码下载

    《GT-Grid 源码解析与后台交互实践》 GT-Grid 是一款功能强大的数据网格组件,广泛应用于Web应用中展示和管理大量结构化数据。本次我们将通过"gt_grid_demo"源码下载来深入理解GT-Grid的运作机制及其与后台数据交互...

    gt-grid 表格源码,开发包,api手册

    "gt-grid 表格源码,开发包,api手册"这一资源主要涵盖了用于构建数据表格的前端组件的源代码、开发工具以及相关的API文档。gt-grid是一个强大的数据展示和操作框架,它允许开发者以灵活的方式展示和管理大量结构化...

    最新的GT-Grid vs EXT-Grid例子(超级经典)

    在例子中,我们可以看到三种不同场景的应用,这些例子可能展示了GT-Grid和EXT-Grid在处理基础数据展示、高级功能集成以及自定义程度上的差异。例如,可能有一个例子专门对比两者的数据加载速度,另一个可能比较各自...

    GT-grid 例子

    GT-Grid 是一款强大的数据网格组件,常用于前端开发中展示和操作大量结构化数据。在Web应用中,它提供了一种高效的方式来呈现表格数据,支持排序、筛选、分页、编辑等多种功能,大大提升了用户体验。这个压缩包文件...

    GT-Grid 是一个基于Ajax技术的列表组件

    GT-Grid 是一个基于Ajax技术的列表组件. 拥有丰富的功能以及良好易用性和用户体验. 它是 EC Side列表组件 的更新换代产品. (ECSide是GT-Grid作者的另一作品, 是一个在国内拥有广泛用户群的列表组件,它基于传统的jsp...

    gt-grid.rar+demo

    "gt-grid.rar+demo"这个压缩包文件包含的是关于"gt-grid"的样例源码。"gt-grid"是一个常见的前端数据展示控件,通常用于创建高性能、可定制的表格,它在Web应用中广泛使用,特别是在大数据量的场景下。下面我们将...

    最新版GT-grid-好用的表格组件

    10. **文档与示例**:为了方便开发者快速上手,GT-grid提供了详尽的文档和丰富的示例代码,从基础用法到高级功能,都有清晰的指导。 在最新的版本中,GT-grid不仅在功能上进行了增强,而且在用户体验和性能优化上也...

    gt-grid 分页 用ajax 开发的 里面有例子

    在本示例中,“gt-grid 分页 用ajax 开发的 里面有例子”显然演示了如何使用`gt-grid`配合Ajax实现分页功能。 首先,我们需要理解Ajax的核心概念。Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的...

    网页Grid组件 GT-Grid组件

    网页Grid组件,特别是GT-Grid组件,是Web开发中一种强大的数据展示工具,它为开发者提供了灵活、高效且功能丰富的表格解决方案。Grid组件在网页应用中扮演着至关重要的角色,用于展示结构化数据,支持排序、筛选、...

    GT-GRID插件下载

    GT-GRID是一款基于jQuery的强大的数据网格插件,主要用于展示和操作大量结构化的数据。它在Web应用中常被用于创建功能丰富的表格,提供类似数据库的分页、排序、过滤和编辑功能,使得用户可以方便地浏览和管理数据。...

    Draw-Grid_100_catia插件_catia车线_drawgrid_Draw-Grid下载_catia_

    标题中的“Draw-Grid_100_catia插件_catia车线_drawgrid_Draw-Grid下载_catia_”提到了几个关键元素,分别是“Draw-Grid”,“CATIA 插件”,“catia车线”以及“下载”。这表明我们要讨论的是一个用于CATIA软件的...

    GT-Grid 1.36 版 前后台结合示例

    NULL 博文链接:https://fins.iteye.com/blog/283672

    Ag-Grid Demo2.7z

    3. **社区资源**:网上有许多关于ag-Grid的讨论和教程,可以从中获取更多实用技巧和解决常见问题的方法。 总之,这个"Ag-Grid Demo2.7z"是学习和探索ag-Grid的一个好起点,无论你是前端开发者还是数据展示需求者,...

    GT-Grid 列表组件[1]

    列表组件N0.1(国产) 用过之后你才知道优化 初学者提供问题解答哈 qq 406235245

    NVIDIA-GRID-Linux-KVM-470.63-470.63.01.zip

    此压缩包"NVVIDIA-GRID-Linux-KVM-470.63-470.63.01.zip"包含了与NVIDIA GRID相关的两个关键组件,以及一系列相关的文档,这些文档提供了详细的安装指南、更新说明和用户手册。 首先,我们来看一下两个主要的运行时...

Global site tag (gtag.js) - Google Analytics