Ext Js 3.2 EditorGridPanel 加入一行后进行保存并进行数据验证
2011-11-10 19:46
323 查看
1:代码
2:程序效果
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>gridPanel</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="stylesheet" type="text/css" href="ext3.2/resources/css/ext-all.css"></link> <script type="text/javascript" src="ext3.2/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext3.2/ext-all.js"></script> <script type="text/javascript" src="ext3.2/src/local/ext-lang-zh_CN.js"></script> <script type="text/javascript"> Ext.onReady(function(){ var cum = new Ext.grid.ColumnModel([{ header: "编号", dataIndex: "ID_NO", editor:new Ext.grid.GridEditor( new Ext.form.TextField({ allowBlank:false }) ) },{ header: "电话号码", dataIndex: "PHONE_NO", editor:new Ext.grid.GridEditor( new Ext.form.TextField({ allowBlank:false }) ) },{ header: "集团编码", dataIndex: "UNIT_ID", editor:new Ext.grid.GridEditor( new Ext.form.TextField({ allowBlank:false }) ) },{ header: "集团名称", dataIndex: "UNIT_NAME", editor:new Ext.grid.GridEditor( new Ext.form.TextField({ allowBlank:false }) ) },{ header: "客户经理编号", dataIndex: "SERVICE_NO", editor:new Ext.grid.GridEditor( new Ext.form.TextField({ allowBlank:false }) ) },{ header: "客户经理名称", dataIndex: "SERVICE_NAME", editor:new Ext.grid.GridEditor( new Ext.form.TextField({ allowBlank:false }) ) } ]); var data = [ [1,'60261938','0001','集团1','1001','李晓红'], [2,'60261939','0002','集团2','1002','郭阳'], [3,'60261940','0003','集团3','1003','李小璐'], [4,'60261941','0004','集团4','1004','杨娜'], [5,'60261942','0005','集团5','1005','谢删'], [6,'60261943','0006','集团6','1006','马艳艳'], [7,'60261944','0007','集团7','1007','徐贝贝'], [8,'60261945','0008','集团8','1008','周四向'], [9,'60261956','0009','集团9','1009','李四光'] ]; var store = new Ext.data.Store({ proxy: new Ext.data.MemoryProxy(data), reader: new Ext.data.ArrayReader({}, [ {name: 'ID_NO'}, {name: 'PHONE_NO'}, {name: 'UNIT_ID'}, {name: 'UNIT_NAME'}, {name: 'SERVICE_NO'}, {name: 'SERVICE_NAME'} ]) }); var Record = Ext.data.Record.create([ {name: 'ID_NO',type:'int',mapping:'ID_NO'}, {name: 'PHONE_NO',type:'string',mapping:'PHONE_NO'}, {name: 'UNIT_ID',type:'string',mapping:'UNIT_ID'}, {name: 'UNIT_NAME',type:'string',mapping:'UNIT_NAME'}, {name: 'SERVICE_NO',type:'string',mapping:'SERVICE_NO'}, {name: 'SERVICE_NAME',type:'string',mapping:'SERVICE_NAME'} ]); store.load(); var grid = new Ext.grid.EditorGridPanel({ autoHeight: true, renderTo: 'cumgrid', store: store, cm: cum, tbar: new Ext.Toolbar(['-', { text: '添加一行', handler: function(){ var p = new Record({ ID_NO:'', PHONE_NO:'', UNIT_ID:'', UNIT_NAME:'', SERVICE_NO:'', SERVICE_NAME:'' }); grid.stopEditing(); store.insert(0, p); grid.startEditing(0, 0); } }, '-', { text: '删除一行', handler: function(){ Ext.Msg.confirm('信息', '确定要删除?', function(btn){ if (btn == 'yes') { var sm = grid.getSelectionModel(); var cell = sm.getSelectedCell(); var record = store.getAt(cell[0]); store.remove(record); } }); } }, '-',{ text: '保存', handler: function(){ //得到我们新添加的Record的集合 var modified = store.modified.slice(0); //将数据放到另一个数组中 var jsonArray = []; Ext.each(modified, function(item) { //alert(item.data.ADDRESS);//读取当前被修改的记录的地址 jsonArray.push(item.data); //item.data中保存的是当前Record的所有字段的值(JSON),不包含结构信息 }); var r = checkData(modified); if(!r){ return; }else{ //通过ajax请求将修改的记录发送到服务器 Ext.lib.Ajax.request( 'POST',//最好不要用get请求 'Unit9/saveData.jsp', {success: function(response){ Ext.Msg.alert('添加成功', response.responseText, function(){ //store.reload(); }); },failure: function(){ Ext.Msg.alert("失败信息", "与后台联系的时候出现了问题"); }}, 'data=' + encodeURIComponent(Ext.encode(jsonArray)) ); } } },'-']) }); //验证输入的数据是否有效 var checkData = function(modified){ var result = true; Ext.each(modified,function(record){ var keys = record.fields.keys;//获取Record的所有名称 Ext.each(keys,function(name){ //根据名称获取对应的值 var value = record.data[name]; //得到指定名称所在的列索引 var colIndex = cum.findColumnIndex(name); //得到指定名称所在的行索引 var rowIndex = grid.getStore().indexOfId(record.id); //根据行列索引找出组件编辑器 var editor = cum.getCellEditor(colIndex).field; //验证值是否合法 var r = editor.validateValue(value); if(!r){ Ext.MessageBox.alert("验证数据","对不起,您输入的数据非法",function(){ grid.startEditing(rowIndex,colIndex); }); result = false; return; } }); }); return result; } }); </script> </head> <body> <div id="cumgrid"></div> </body> </html>
2:程序效果
相关文章推荐
- Ext Js 3.2 EditorGridPanel 的使用方法
- Ext Js 3.2 EditorGirdPanel增加一行和删除一行
- 在EditorGridPanel中插入一行(经常在增加的时候用到)
- extjs EditorGridPanel 编辑保存数据
- EditorGridPanel 新增记录行无法保存
- Extjs的EditorGridPanel修改数据后怎样保存到数据库
- Ext,EditorGridPanel保存修改数据
- EditorGridPanel组件取消某一行的编辑状态
- 关于Ext的EditorGridPanel实时修改数据后保存到数据库的一点心得
- Ext EditorGridPanel 添加一行.通用解决办法
- Ext Js 关于GridPanel---EditorGridPanel
- Ext js3.2的GridPanel的selModel属性设置Ext.grid.AbstractSelectionModel
- 关于Ext的EditorGridPanel实时修改数据后保存到数据库
- Ext Js 3.2修改文本颜色和在表格中插入图片,主要是性别进行判断来选择图片
- 关于Ext的EditorGridPanel实时修改数据后保存到数据库的一点心得
- extjs的EditorGridPanel修改数据后怎样保存到数据库
- 如何在页面打开后根据条件让EditorGridPanel的某一行的复选框默认选中?
- Java将图片作为二进制进行保存和读取
- 不允许保存更改。您所做的更改要求删除并重新创建一下表。您对无法重新创建的表进行了更改或启用了“阻止保存要求重新创建表的更改”选项
- Ext Js 3.2 饼状图应用