`
hongzhguan
  • 浏览: 272028 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Ext中实现EditorGridPanel的增删改操作(1)

    博客分类:
  • Ext
阅读更多
function fun() {

// 创建选项框
var sm = new Ext.grid.CheckboxSelectionModel();
// 创建表格的列模型
var cm = new Ext.grid.ColumnModel([sm,
// 显示自动编号
new Ext.grid.RowNumberer(), {
header : '编 号',
dataIndex : 'stuid',
align : 'center'
}, {
header : '姓 名',
dataIndex : 'stuname',
align : 'center',
editor : new Ext.form.TextField()
}, {
header : '年 龄',
dataIndex : 'stuage',
align : 'center',
sortable : true,
editor : new Ext.form.TextField()
}, {
header : '班级名称',
dataIndex : 'gradename',
align : 'center',
editor : new Ext.form.TextField()
}, {
header : '班主任',
dataIndex : 'teacher',
align : 'center',
editor : new Ext.form.TextField()
}, {
header : '家庭住址',
dataIndex : 'address',
align : 'center',
editor : new Ext.form.TextField({
align : 'center',
allowBlank : false
})
}]);

// 创建数据装载器
var stustore = new Ext.data.Store({

/*
* proxy : new Ext.data.MemoryProxy(data), reader : new
* Ext.data.ArrayReader({}, [{ name : 'stuid', mapping : 0 }, {
* name : 'stuname', mapping : 1 }, { name : 'sex', mapping : 2 }, {
* name : 'age', mapping : 3 }, { name : 'address', mapping : 4 }, {
* name : 'birth', mapping : 5 }, { name : 'remark', mapping : 6
* }])
*/

// 通过请求创建数据装载器
proxy : new Ext.data.HttpProxy({
url : 'student.do?method=showStudent'
}),

reader : new Ext.data.JsonReader({
totalProperty : 'totalProperty',
root : 'root'
}, [{
name : 'stuid'
}, {
name : 'stuname'
}, {
name : 'stuage'
}, {
name : 'gradename'
}, {
name : 'teacher'
}, {
name : 'address'
}])
});
// 加载数据装载器
stustore.load({
params : {
start : 0,
limit : 4
}
});
// 创建grid表格
// var stugrid=new Ext.grid.GridPanel({
// 实现能动态修改的表格
var stugrid = new Ext.grid.EditorGridPanel({
store : stustore,
cm : cm,
sm : sm,
height : 300,
width : 'auto',
loadMask : true,
stripeRows : true,// 显示斑马线
// 添加工具栏
tbar : new Ext.Toolbar({
items : [{
'text' : '添加',
icon : 'images/add.gif',
iconAlign : 'left',
handler : addStu
}, new Ext.Toolbar.Separator(), {
'text' : '删除',
icon : 'images/del.gif',
iconAlign : 'left',
handler : function() {
// 获取选中的项
var selAtt = sm.getSelections();
if (selAtt.length == 0) {
Ext.Msg.alert("提示", "请选中要删除的记录!");
} else {
Ext.MessageBox.confirm("提示", "您确定要删除该条记录吗?",
function(e) {
if (e == 'yes') {
for (var i = 0; i < selAtt.length; i++) {
Ext.Ajax.request({
url : 'student.do?method=delStudent',
params : {
id : selAtt[i].data.stuid
}
});
}
// 重新装载数据信息
stustore.reload({
params : {
start : 0,
limit : 4
}
});
// 重新刷新grid数据
stugrid.view.refresh();
}
});
}
}
}, new Ext.Toolbar.Separator(), {
'text' : '修改',
icon : 'images/edit.gif',
iconAlign : 'left',
handler : function() {
// 友情提示
// 获取单条修改的信息
// var modified=stustore.modified;;
// 获取所有的修改对象
var modified = stustore.getModifiedRecords();
Ext.Msg.confirm("提示", "您确认修改记录吗?", function(e) {
if (e == 'yes') {
// 定义一个json
var json = [];
for (var i = 0; i < modified.length; i++) {
// 将修改的对象加入到json中
Ext.each(modified[i], function(item) {
json.push(item.data);
})
}
if (json.length > 0) {
Ext.Ajax.request({
url : 'student.do?method=updateStudent',
// 对一个对象、数组或者其它值进行编码
params : {
stuJson : Ext.util.JSON
.encode(json)
},
succuss : function(response) {
Ext.Msg.alert("信息",
response.responseText,
function() {
stustore.load({
params : {
start : 0,
limit : 4
}
});
});
},
failure : function() {
Ext.Msg.alert("信息",
"与后台联系时出现错误!");
}
});
}
}
});
}
}, new Ext.Toolbar.Separator(), {
'text' : '退出',
handler : showCom
}]
}),
// 添加右键菜单
listeners : {
'rowcontextmenu' : function(grid, row, evt) {
evt.preventDefault();// 阻止右键菜单
var menu = new Ext.menu.Menu({
items : [{
'text' : '添加',
icon : 'images/add.gif',
iconAlign : 'left',
handler : addStu
}, {
'text' : '删除'
}, {
'text' : '修改',
icon : 'images/edit.gif',
iconAlign : 'left',
// 友情提示:直接修改单条记录,当鼠标失去焦点就去修改数据信息
// 获取单条修改的信息
handler : function() {
// 获取Store中的记录总数
var count = stustore.getCount();
var record;
// 定义数组,用来存放修改的记录
var array = new Array();
var modified;// 用来存放被修改过的记录的id
var modifiedJSON;// 用来存放被修改的记录字段值的json串
for (var i = 0; i < count; i++) {
record = stustore.getAt(i);

// 如果该条记录被修改过
if (true == record.dirty) {
modified = record.get("stuid");
// 将修改过的值放在一个json字符串中
modifiedJSON = Ext.util.JSON
.encode(record.getChanges());
array.push("'stuid':" + modified
+ "=>" + modifiedJSON);
}
}
Ext.Msg.confirm("提示", "您确认修改记录吗?",
function(e) {
if (e == 'yes') {
Ext.Ajax.request({
url : 'student.do?method=updateOneStudent',
method : 'post',
params : {
// 传递js数组(数组元素‘||’连接,否则直接用Array相当于只传递了个Array[0])
array : array
.join("||")
},
// 回调函数
callback : function(
options,
success,
response) {
var msg = Ext.util.JSON
.decode(response.responseText).msg;
if (msg == true) {
Ext.Msg
.alert(
"提示",
"数据库信息更新成功!");
} else {
Ext.Msg
.alert(
"提示",
"数据库信息更新失败!");
}
// 更新完成后重新加载数据源(除去修改的记录后的"小三角")
stustore.proxy = new Ext.data.HttpProxy(
{
url : 'student.do?method=showStudent'
});
stustore.load({
params : {
start : 0,
limit : 4
}
});
}

});
}
});
}
}, {
'text' : '退出'
}]
})
// 显示子菜单
menu.showAt(evt.getXY());
}
},
viewConfig : {
forceFit : true
},
// 实现分页显示数据信息
bbar : new Ext.PagingToolbar({
pageSize : 4,
store : stustore,
displayInfo : true,
displayMsg : '显示第{0}条--{1}条记录,共有{2}记录。',
emptyMsg : '没有显示的记录信息!'
})
});

//创建一个window
var win = new Ext.Window({
autoHeight : true,
width : 700,
title : '显示学生信息',
items : [stugrid]
});

//显示窗体信息
win.show();

}
分享到:
评论

相关推荐

    Ext.net后台分页增删改

    在"Ext.NET后台分页增删改"这个主题中,我们将探讨如何利用Ext.NET实现数据库后台分页、树形视图操作以及Grid面板的CRUD(创建、读取、更新和删除)功能。 首先,让我们深入了解一下后台分页。在Ext.NET中,为了...

    可编辑表格Ext.grid.EditorGridPanel

    Ext.grid.EditorGridPanel是Ext JS库中的一个组件,主要用于创建具有可编辑单元格的表格。这个组件在数据展示和编辑方面提供了丰富的功能,是构建数据密集型应用的理想选择。下面将详细阐述其特点、工作原理及如何...

    Ext可编辑的tree,EditorGridPanel

    因为项目的需求,实现一个可以编辑的tree,在网上找了一个牛人写的控件.Ext.ux.maximgb.tg.EditorGridPanel 把源码下载下来以后 不能运行,自己根据给出的列子,另写了一个小程序.不过并没有与数据库交互.

    ext 读取xml 可编辑grid

    在EXT JS框架中,"ext 读取xml 可编辑grid"是一个常见的需求,涉及到的主要知识点包括EXT的数据对象、EditorGridPanel的使用以及EXT对XML数据格式的支持。下面将详细阐述这些内容。 EXT JS是一个强大的JavaScript库...

    Ext 连接数据库的相关操作

    首先,EXT中的Editgridpanel是一个可编辑的表格组件,用于显示和编辑数据。它集成了数据绑定和行编辑功能,非常适合于数据管理界面。要将Editgridpanel与数据库连接,我们需要创建一个数据源,这通常是通过EXT的...

    ext的edittreegrid实现

    在EXT JS库中,"ext的edittreegrid实现"是一种功能强大的组件,它结合了树形视图(Tree)和编辑网格(EditorGrid)的功能,允许用户在具有层次结构的数据上进行直观的编辑操作。这个组件对于那些需要管理结构化且...

    解决editorgridpanel编辑时视图向右移动的问题

    通常,这样的修复代码会包括对上述策略的实现,比如使用`Ext.util.CSS`来修改样式,或者在`beforeedit`和`afteredit`事件中处理滚动条和视图的位置。为了进一步了解并应用这个修复,我们需要查看`bugfix.js`的内容,...

    给Extjs的GridPanel增加“合计”行

    在实际应用中,我们经常需要在GridPanel底部显示一行“合计”行,以便对某一列或多列的数据进行求和或其他统计操作。这篇博文“给Extjs的GridPanel增加‘合计’行”将指导我们如何实现这一功能。 首先,我们需要...

    EXT2.0 GRID 示例

    3. **行编辑**:EXT GRID支持行内编辑,用户可以直接在表格中修改数据,这需要结合EditorGridPanel和Form Field组件来实现。 4. **排序和过滤**:GRID可以实现列点击排序,通过配置`sortable`属性和`sortInfo`对象...

    Ext组件说明 Ext组件概述

    BoxComponent是Ext中的基本布局容器,可以用来控制子元素的位置和大小。通过调整BoxComponent的配置选项,开发者可以实现灵活的布局设计。 ##### 2. **Button(按钮组件)** Button组件是Web应用中最常见的交互...

    Ext3.0 api帮助文档

    - **Ext.grid.EditorGridPanel**: 提供单元格级别的编辑功能。 6. **表单(Forms)** - **Ext.form.FormPanel**: 创建表单的容器,支持多种表单元素和验证。 - **Ext.form.Field**: 表单字段类,如文本框、选择...

    Extjs可编辑的EditorGridPanel

    NULL 博文链接:https://zxf-noimp.iteye.com/blog/629629

    EXT核心API详解

    73、Ext.grid.EditorGridPanel类 ……… 62 74、Ext.grid.PropertyGrid类 …………… 65 1、Ext类 addBehaviors(Object obj) : void 对选择的元素 应用事件侦听器,事件名以@附加在结尾,例如 addBehaviors({ ...

    Ext组件描述,各个组件含义

    **2.5 Editor Grid Panel (Ext.grid.EditorGridPanel)** - **xtype**: `editorgrid` - **功能描述**:Editor Grid Panel 是一个支持行级编辑的网格面板。 - **主要用途**:适合于需要对表格中的数据进行编辑的场景...

    Extjs EditorGridPanel中ComboBox列的显示问题

    为了解决这个问题需要在EditorGridPanel的ColumnModel中显示ComboBox的地方使用renderer属性,重新渲染,方法如下: 代码如下: //部门列表 var comboxDepartmentStore = new Ext.data.Store({ proxy: new Ext.data....

    Ext表格控件和树控件

    ### Ext表格控件和树...通过以上内容,我们可以看到 `GridPanel`、`EditorGridPanel` 和 `TreePanel` 在 Ext JS 中的应用非常广泛,它们提供了强大的数据展示和编辑能力,同时也为开发者提供了高度的灵活性和定制性。

    Ext grid合并单元格

    根据提供的文件信息,我们可以深入探讨如何在 Ext JS 中实现 Grid 的单元格合并功能。此案例主要涉及到了自定义 GridView 的 `renderHeaders` 方法来达到单元格合并的目的,并且还涉及了模板(Template)的使用、...

    treePanel与gridPanel技术实现页面的增删改查

    在本文中,我们将深入探讨`treePanel`和`gridPanel`技术在页面上实现数据的增删改查功能。这两个组件是Ext JS框架中的核心组件,广泛用于构建数据驱动的用户界面。`treePanel`主要用于展示层级结构的数据,如文件...

Global site tag (gtag.js) - Google Analytics