149
failure: function(response)
{
150
Ext.Msg.alert("警告", "数据更新失败,请稍后再试!");
151
}
152
});
153
}
154
else
{
155
Ext.Msg.alert("警告", "没有任何需要更新的数据!");
156
}
157
}
158
159
//编辑后触发的事件,可在此进行数据有效性的验证
160
function afterEdit(e)
{
161
if (e.field == "common")
{
162
if (e.value == "大笨")
{
163
Ext.Msg.alert("错误", "大笨是人物不是植物", function()
{ grid.startEditing(e.row, e.column) });
164
}
165
}
166
}
167
});
红色部分是新增加的代码,我们首先给grid增加了一个afterEdit事件,顾名思义,该事件在编辑之后被触发,我们可以在此时对数据的有效性进行验证,在本例中,我们只是简单的让common列的值不能等于一个特定的字符串,实际的项目中可能需要对每一列用正则表达式来进行验证。在触发afterEdit事件的时候会传递一个事件对象,该对象有如下几个属性:
grid:当前grid。
record:当前行。
field:当前列名。
value:被设置的值。
originalValue:编辑前的值。
row:行索引。
column:列索引。
我们还在grid上加了一个工具栏,上边放了一个保存按钮,用以将修改后的数据传递到服务器进行保存。由于记录的集合是一个复杂的json对象,我们需要的只是相关数据的几个,因此第137-140行对该集合进行了处理。当然,我们还需要在服务器端接收数据然后进行处理,在系列一中我们已经学习到相关的方法,这里不再赘述。我们看一看运行之后的效果图:

通过firebug,我们可以看到向服务器投递的数据:
接下来看看如何添加数据,我们在工具栏里边添加一个增加按钮,相关代码如下:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
1
tbar: [
{
2
text: "保存",
3
handler: function()
{
4
var modified = store.modified;
5
6
updateData(modified);
7
}
8
},
9
'-',
10
{
11
text: "增加",
12
handler: function()
{
13
var Plant = store.recordType;
14
var p = new Plant(
{
15
common: 'New Plant 1',
16
light: 'Mostly Shade',
17
price: 0,
18
availDate: (new Date()).clearTime(),
19
indoor: false
20
});
21
grid.stopEditing();
22
store.insert(0, p);
23
grid.startEditing(0, 0);
24
}
25
}
26
]
在向grid中插入数据之前,必须要先获得插入数据的格式,Store类的recordType属性返回Record的构造函数,表明了数据的格式,然后通过构造函数传递数据,这样就准备好了要插入的数据了。接下来将grid的编辑状态关闭,插入数据,然后把要插入数据的第一列设置为编辑状态。运行后点击增加按钮后的效果如下:
可以看到,在grid的最上边增加了一行,对应行索引0,第一列出于编辑状态,对应列索引1,增加行中的默认初始数据就是我们在构造函数中传递进来的数据。注意,新增加的数据在修改之前是不会保存在store的modified属性里边的。
我们再来看看如何进行删除操作。在进行删除之前,我们必须要选择需要删除的行,grid有单元格选择模型和行选择模型两种,分别以类CellSelectionModel和RowSelectionModel来表示,默认是单元格选择模型,也就是在点击单元格的时候选中的是当前单元格,可以通过配置属性selModle(可简写为sm)来指定选择模式:sm:new Ext.grid.RowSelectionModel({singleSelection:true}), 这样就把选择模型改为了行选择模型,参数singleSelect指明是否是单选的,为真的时候只能选择一行,默认是false,可以按下ctrl键或者shift键进行多行的选择。选择好之后,我们就来看看如何删除吧:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
1
tbar: [
{
2
text: "保存",
3
handler: function()
{
4
var modified = store.modified;
5
updateData(modified);
6
}
7
},
8
'-',
9
{
10
text: "增加",
11
handler: function()
{
12
var Plant = store.recordType;
13
var p = new Plant(
{
14
common: 'New Plant 1',
15
light: 'Mostly Shade',
16
price: 0,
17
availDate: (new Date()).clearTime(),
18
indoor: false
19
});
20
grid.stopEditing();
21
store.insert(0, p);
22
grid.startEditing(0, 0);
23
}
24
},
25
" ",
26
{
27
text: "删除",
28
handler: function()
{
29
var selModel = grid.getSelectionModel();
30
if (selModel.hasSelection())
{
31
Ext.Msg.confirm("警告", "确定要删除吗?", function(button)
{
32
if (button == "yes")
{
33
var selections = selModel.getSelections();
34
Ext.each(selections, function(item)
{
35
store.remove(item);
36
});
37
}
38
});
39
}
40
else
{
41
Ext.Msg.alert("错误", "没有任何行被选中,无法进行删除操作!");
42
}
43
}
44
}
45
]
分享到:
相关推荐
这篇“ExtJS笔记——Grid实现后台分页”探讨了如何在ExtJS的Grid组件中实现高效的后台分页功能。 后台分页是一种常见的数据处理策略,特别是在大数据量的情况下,它将数据分批加载,避免一次性加载所有记录导致的...
ExtJS4学习笔记(六)---多表头Grid ExtJS4学习笔记(七)---带搜索的Grid(SearchGrid) ExtJS4学习笔记(八)---Grid多选/全选 ExtJS4学习笔记(九)---ExtJS4 EditGrid(可编辑的Grid) ExtJS4学习笔记(十)---ExtJS4...
在"Extjs复习笔记(二十)-- tree和grid结合"这篇博文中,博主探讨了如何在EXTJS中实现树形视图(Tree)与网格视图(Grid)的融合。 Tree组件在EXTJS中通常用于显示具有层级关系的数据,例如文件系统、组织架构等。...
ExtJS4学习笔记(六)---多表头Grid ExtJS4学习笔记(十)---ExtJS4图片验证码的实现 ExtJS4学习笔记(十一)---TabPanel ExtJS4学习笔记(十三)---上传文件(upload) ExtJS4学习笔记(十二)---选项卡(tabs) ExtJS4学习笔记...
在本篇学习笔记中,我们将深入探讨EXTJS中最基本的Grid的构建和配置。 首先,EXTJS的Grid由多个组件构成,其中最重要的是`ColumnModel`,它负责定义Grid中的列属性。在示例代码中,我们创建了一个`ColumnModel`对象...
【ExtJs 4.x 学习笔记】 在Web应用程序开发领域,ExtJs是一个强大的JavaScript库,主要用于构建富客户端界面。随着技术的不断发展,ExtJs也不断进化,从3.x版本到4.x,再到5.x,引入了许多新特性,提升了开发效率和...
### ExtJS 学习笔记概览 #### 一、ExtJS 入门 **1.1 ExtJS 构成及如何引用** ExtJS 是一款基于 JavaScript 的开源框架,专为 Web 应用程序的前端界面设计。其核心优势在于提供了一套丰富的 UI 组件和强大的数据...
### extJs4.2 学习笔记 #### 1. Panel 组件 Panel 是 ExtJS 中最基础且功能强大的容器之一。它具有多种属性和方法,可以用来创建各种类型的界面元素,例如弹出框、对话框等。在给定代码示例中,Panel 的创建如下:...
exjts4 学习笔记源码,源码包含windws,hbox,vbox和Grid的应用,其中grid介绍比较多。下载解压后,部署后就可以使用,所有代码均在demo文件夹下。更多extjs4教程,请关注http://www.mhzg.net
11. **数据源(Ext.grid.Panel)**:`store`是EXTJS中数据的容器,`columnLines`控制是否显示列分割线,`columns`定义了列的结构。`viewConfig`允许自定义网格视图的属性,如`stripeRows`用于开启斑马线效果,`...
根据给定的文件信息,我们可以深入探讨两个关键的Extjs组件——Tab Panel(标签页控件)和Grid(表格控件)。这两个控件是Extjs框架中非常实用且功能丰富的部分,广泛应用于Web应用程序的界面设计与交互逻辑构建。 ...
因此,现在几乎所有的grid控件都会支持分页功能。extjs也不例外,它对分页也提供了强大而方便的支持,使得我们在分页处理上可以得心应手。 在extjs中,类Ext.PagingToolbar封装了关于分页的操作,该类从Toolbar继承...
ExtJS是一个开源的JavaScript库,主要用于...通过本笔记的学习,可以掌握ExtJS在前端开发中的应用,理解各个组件和管理器的使用方法,以及一些针对特定浏览器的布局技巧,为创建美观、高效的用户界面打下坚实的基础。
EXTJS是一种基于JavaScript的富客户端应用框架,广泛用于构建企业级..."批量上传"这个压缩包可能包含了实现这一功能所需的全部代码、样式、支持文件及开发者的经验总结,对于学习和理解EXTJS批量上传机制非常有帮助。
ExtJS 4是一款基于JavaScript的富客户端框架,用于构建交互式Web应用。MVC(Model-View-Controller)...本源码提供了实际的开发示例,通过学习和研究,可以帮助开发者深入理解ExtJS 4 MVC模式,并应用于自己的项目中。
学习EXTJS 3.3,你需要掌握JavaScript基础知识,理解其组件模型、事件处理机制和数据绑定原理。同时,熟悉HTML和CSS有助于更好地定制EXTJS组件的外观。通过实践,你可以逐步熟悉EXTJS的API,熟练运用它来构建高质量...
Extjs4.0学习与开发笔记 描述了菜单的实现、带搜索的Grid,带checkbox的可编辑的Grid等知识点,并附实现代码
博客中的“extjs笔记(1)”可能是作者分享的学习心得,对于理解这三个js如何协同工作会有很大帮助。 在实际开发中,理解和熟练运用这些核心文件,将有助于构建高效、可维护的ExtJS应用。同时,持续学习和实践是...