ExtJS 列表数据编辑
在ExtJs中,GridPanel一般用于展示列表数据。同时利用一些附加的插件也能编辑数据。类似于asp.net中的DataGridView控件.
展示数据比较简单,利用Store则可以自动展示,只要在服务器端将数据Json化即可;
下面在Extjs中编辑列表数据
一、单条编辑
单条数据的编辑利用了Ext.ux.grid.RowEditor插件达到目的
var gridEditor = new Ext.ux.grid.RowEditor({ listeners: {
'canceledit': function () {
var re = FieldGrid.getSelectionModel().getSelected();
var id = re.get("Id");
if (id == null) {
var r = FieldStore.getAt(0);
if (Ext.isDefined(r)) {
FieldStore.remove(r);
}
}
},
'beforeedit': function () {
},
//赋值
'beforerecordsubmit': function (r, cm, ri) {
r.set('Content', cm.getCellEditor(1, ri).getValue());
r.set('Description', cm.getCellEditor(2, ri).getValue());
}
}
});
新增时:
gridEditor.stopEditing();
FieldStore.insert(0, new FieldStore.recordType);
FieldGrid.getView().refresh();
FieldGrid.getSelectionModel().selectRow(0);
gridEditor.startEditing(0);
在store中。定义如下:
var FieldStore = new Ext.data.Store({
url: ‘url’,
remoteSort: true,
reader: new Ext.data.JsonReader({
root: 'data',
totalProperty: 'total',
id: 'Id',
fields: [
{
name: 'Id',
type: 'string'// ID
},
{
name: 'Name',
type: 'string'
} ,
{
name: 'Description',
type: 'string'
} ,
{
name: 'CreateTime',
type: 'date'
}
]
}),
listeners: {
'update': function (thiz, record, operation) {
var model = record.data;
if (operation == Ext.data.Record.EDIT
&& !record.getChanges().Id) {
Ext.Ajax.request({
url: ‘url’,
params: model,
success: function (response, opts) {
var result = Ext.util.JSON.decode(response.responseText);
if (result.success) {
if (!record.get('Id'))
record.set('Id', result.id);
thiz.commitChanges();
} else {
alert(result.msg);
thiz.rejectChanges();
if (!record.get('Id')) //新增
thiz.remove(record);
}
}
});
}
}
}
}
);
在更新时,利用了store组件的update事件进行更新。
效果图:

二、批量编辑数据
在开发过程中,一些业务往往需要一次性保存,如凭证,单据数据,如下图;批量保存数据,这时需要使用EditorGridPanel组件。来定义可编辑的地方。

1、grid以利用Cm来定义列及列的相关属性.定义如下:
var Cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), Sm,
{
header: "ID",
dataIndex: 'Id',
name: 'Id',
sortable: true,
hidden: true
},
{
header: "数量",
dataIndex: 'Quantity',
sortable: true,
width: 80,
editor: {
xtype: 'numberfield',
allowBlank: false,
name: 'Quantity'
}
},
{
header: "时间(分钟)",
dataIndex: 'WorkingHour',
sortable: true,
width: 80,
editor: {
xtype: 'numberfield',
allowBlank: false,
name: 'Workinghour'
} }
]);
在提交时,
var submit = new Ext.ux.SubmitBtn({
handler: function () {
//grid失去焦点,会将编辑的数据保存到store,如果不采用些,则最后的数据如果直接提交时,则会丢失
if (RouteSheetFormGrid.activeEditor != null) {
RouteSheetFormGrid.activeEditor.completeEdit();
}
//将所有修改后的数据保存到数组中。
var arrItems = new Array();
Store.each(
function (r) {
arrItems.push(r.data);
}
);
if (form.getForm().isValid()) {
form.getForm().submit({
url: 'url',
params: {
//以json方式提交到后台
'record': Ext.encode(arrItems)
},
success: function (form, action) {
win.destroy(); // 关闭窗口
},
failure: function (form, action) {
alert(action.result.msg);
}
}); // formSubmitArgs
// 引用之前定义的请求参数变量
}
}
});
由于提交时,对象已json化。在后台,需要将json对象化。
ExtJS 列表数据编辑的更多相关文章
- 玩转vue前进刷新,后退不刷新and按需刷新
大白萝卜小课堂开讲了!带你玩转vue前进后退按需刷新! 用vue做后台管理项目,特别是有列表页.列表数据详情页.列表数据修改页功能的码友们,几乎都被vue前进后退都刷新的逻辑坑过,本萝卜更是! 萝卜的 ...
- Java快速开发平台,JEECG 3.7.6性能增强版本发布
JEECG 3.7.6 性能增强版本发布 导读 ⊙Vue SPA单页面应用 ⊙Datagrid标签实现不同风格切换,支持BootstrapTable.EasyUI ⊙灵活通用代码生成器工厂 ...
- Java快速开发平台强大的代码生成器,JEECG 3.7.5 VUE+ElementUI SPA单页面应用版本发布
JEECG 3.7.5 VUE+ElementUI SPA单页面应用版本发布 此版本为Vue+ElementUI SPA单页面应用版本,提供新一代风格代码生成器模板,采用Vue技术,提供两套精美模板E ...
- 无废话ExtJs 入门教程十七[列表:GridPanel]
无废话ExtJs 入门教程十七[列表:GridPanel] extjs技术交流,欢迎加群(201926085) 在Extjs中,GridPanel用于数据显示,即我们平时说的列表页.在本节中,我们先对 ...
- ExtJS组件的xtype属性列表
ExtJS的应用界面是由很多小部件组合而成的,这些小部件被称作“组件(Component)”,所有组件都是Ext.Component的子类,Ext.Component提供了生命周期管理包括初始化.渲染 ...
- extjs获取选中列表!
extjs 当批量某一table 元素时! 获取元素的属性! var list= []; var array = grid.getSelectionModel().getSelections() ...
- ExtJs之列表常用CRUD
前端代码: Ext.onReady(function(){ Ext.define('Person', { extend: 'Ext.data.Model', fields: [{name: 'id', ...
- ExtJs之列表(grid)
--renderers渲染器 可以格式化该列显示的数据格式或者按照你自定义的脚本显示最终数据样子 先看下renderer: function()里的参数 renderer:function(value ...
- ExtJS Panel主要配置列表
Ext.panel.Panel 属性 值 描述 animCollapse Boolean 设置面板折叠展开是否显示动画,Ext.Fx可用默认true,否则false applyTo Mixed 面板定 ...
随机推荐
- JavaScript 学习小结
简要的功能点: 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编程代码. JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行. 操作 HTML 元素 d ...
- PLL失锁
2016-07-05 现象:在低温(-30度以下)下,射频锁定信号出现周(大约20ms)期性高低电平的变化,由于MCU检测一次需要的时间很长(大于500ms), 大概总是检测不到失锁状态,所以不会出现 ...
- Linux基础-常用命令
常用的压缩命令 一.tar 1.压缩:tar zcvf [压缩包名].tar.gz [待压缩的文件名 ... ] 2.解压缩:tar zxvf [压缩包名].tar.gz -C [指定的解压目录] 3 ...
- Appium移动自动化测试之安装Appium
第一次学习appium,希望此安装教程可以帮助初学者,共同学习. Appium官网介绍:Appium是与本地,使用开源自动化测试框架, 混合和移动Web应用程序. 它驱动iOS和Android应用使用 ...
- @RequestBody接收ajax的json字符串
在使用ajax进行请求,并传递参数时,偶尔需要把数组作为传递参数,这是就要使用@RequestBody来解决这个问题 在页面端的处理: (1)利用JSON.stringify(arr)需要把json对 ...
- Linux用户和组的管理操作
用户和组的管理操作 命令中涉及的单词和简写: 用户:user:组:group : 增加:add : 修改:modify mod ; 删除 : delete del 增加用户 /etc/ ...
- hibernateTemplate中常用查询方法的使用(原文地址: http://dongruan00.iteye.com/blog/1772311)
一.find(String queryString); 示例:this.getHibernateTemplate().find("from bean.User"); 返回所有Use ...
- MAC 安装j2ee.sh的办法
It says it needs the DISPLAY variable set - what do I need to set it to? Instead of saying: ./java_e ...
- JavaWeb技术(三):JDBC中核心接口
一. DriverManager 接口 DriverManager 数据库连接驱动接口,用于获取数据库连接对象Connection import java.sql.Connection; impor ...
- 一台独立的服务器是可以可以建立多个网站的,一个ip地址,一个端口
# 1,若开启虚拟主机,这个一定要有(IP:端口),找到 #NameVirtualHost *:80 修改成: NameVirtualHost 127.0.0.1:80 # 2,修改<Direc ...