extjs editgrid增加一行
Ext.onReady(function(){ /* * EditorGridPanel的工作过程 * 1、用户点击单元格 * 2、单元格按照预设的组件显示单元格的内容并处于编辑状态 * 3、离开单元格的编辑状态 * 4、更新编辑后的内容,出现三角号表示已经被修改过 * 5、程序内部变化:将记录设置为脏读数据状态,并将修改后的记录存放在Record类型的数组modified中。 */ //准备数据 var data = [ {id:1,date:new Date(),name:"吕鹏",address:"中华人民共和国",bank:"中国光大银行",isFast:true}, {id:2,date:new Date(),name:"张三",address:"中华人民共和国",bank:"中国农业银行",isFast:false}, {id:3,date:new Date(),name:"李四",address:"中华人民共和国",bank:"中国商业银行",isFast:false}, {id:4,date:new Date(),name:"王五",address:"中华人民共和国",bank:"中国招商银行",isFast:false} ]; //Proxy var proxy = new Ext.data.MemoryProxy(data); //描述数据结构 var Order = Ext.data.Record.create( [ {name:"ID",type:"int",mapping:"id"},//编号 {name:"DATE",type:"date",mapping:"date"},//日期 {name:"NAME",type:"string",mapping:"name"},//姓名 {name:"ADDRESS",type:"string",mapping:"address"},//地址 {name:"BANK",type:"string",mapping:"bank"},//银行 {name:"ISFAST",type:"boolean",mapping:"isFast"}//银行 ] ); //Reader var reader = new Ext.data.JsonReader({},Order); //Store 列模型中的dataIndex必须和Human结构中的name属性保持一致 var store = new Ext.data.Store({ proxy:proxy, reader:reader, autoLoad:true, pruneModifiedRecords:true }); //交易银行 var banks = [ ["中国光大银行","中国光大银行"], ["中国农业银行","中国农业银行"], ["中国商业银行","中国商业银行"], ["中国招商银行","中国招商银行"] ] //列模型 var cm = new Ext.grid.ColumnModel([ {header:"订单编号",dataIndex:"ID",width:60,editor:new Ext.grid.GridEditor(new Ext.form.NumberField({allowBlank:false}))}, {header:"下单日期",dataIndex:"DATE",width:140,renderer:new Ext.util.Format.dateRenderer("Y-m-d"),editor:new Ext.grid.GridEditor(new Ext.form.DateField({ format:"Y-m-d" }))}, {header:"收货人姓名",dataIndex:"NAME",width:120,editor:new Ext.grid.GridEditor(new Ext.form.TextField())}, {header:"收货人地址",dataIndex:"ADDRESS",editor:new Ext.grid.GridEditor(new Ext.form.TextField())}, {header:"交易银行",dataIndex:"BANK",width:120,editor:new Ext.grid.GridEditor(new Ext.form.ComboBox({ store:new Ext.data.SimpleStore({ fields:["value","text"], data:banks }), displayField:"text", valueField:"value", mode:"local", triggerAction:"all", readOnly:true, emptyText:"请选择银行" }))}, {header:"快递",dataIndex:"ISFAST",width:70,renderer:function(v){return v?"快递":"非快递"},editor:new Ext.grid.GridEditor(new Ext.form.Checkbox())} ]); //EditorGridPanel定义 var grid = new Ext.grid.EditorGridPanel({ store:store, cm:cm, autoExpandColumn:"ADDRESS", width:800, autoHeight:true, renderTo:"a", autoEncode:true, //提交时是否自动转码 tbar:[{ text:"添加一行", cls:"x-btn-text-icon", handler:function(){ var initValue = { ID:"", DATE:new Date(), NAME:"", ADDRESS:"", BANK:"", ISFAST:false }; var order = new Order(initValue); grid.stopEditing(); grid.getStore().add(order); //设置脏数据 order.dirty = true; //只要一个字段值被修改了,该行的所有值都设置为脏读标记 order.modified = initValue; if(grid.getStore().modified.indexOf(order) == -1){ grid.getStore().modified.push(order); } } },{ text:"删除一行", cls:"x-btn-text-icon", handler:function(){ var sm = grid.getSelectionModel(); if(sm.hasSelection()){ Ext.Msg.confirm("提示","真的要删除选中的行吗?",function(btn){ if(btn == "yes"){ var cellIndex = sm.getSelectedCell();//获取被选择的单元格的行和列索引 var record = grid.getStore().getAt(cellIndex[0]); grid.getStore().remove(record); } }); }else{ Ext.Msg.alert("错误","请先选择删除的行,谢谢"); } } },"-",{ text:"保存", // icon:"", cls:"x-btn-text-icon", handler:function(){ var store = grid.getStore(); //得到修改过的Recored的集合 var modified = store.modified.slice(0); //将数据放到另外一个数组中 var jsonArray = []; Ext.each(modified,function(m){ //alert(m.data.ADDRESS);//读取当前被修改的记录的地址 //m.data中保存的是当前Recored的所有字段的值json,不包含结构信息 jsonArray.push(m.data); }); var r = checkBlank(modified); if(!r){ return; }else{ //通过ajax请求将修改的记录发送到服务器最终影响数据库 Ext.Ajax.request({ method:"post",//最好不要用get请求 url:"../../../editGridServlet", success:function(response,config){ var json = Ext.util.JSON.decode(response.responseText); //grid.getStore().reload(); Ext.Msg.alert("提交成功",json.msg); }, params:{data:Ext.util.JSON.encode(jsonArray)} }); } } }] }); //删除一行时,同步数据库 grid.getStore().on("remove",function(s,record,index){ var jsonArray = [record,data];//因为servlet只处理数组,所以先变成数组 if(record.data.ID != ""){ Ext.Ajax.request({ method:"post", url:"../../../editGridServlet", params:{data:Ext.util.JSON.encode(jsonArray),action:"delete"}, success:function(response,config){ var msg = Ext.util.JSON.decode(response.responseText); //grid.getStore().reload(); Ext.Msg.alert("",msg.msg); } }); } }); //验证是否输入的数据是有效的 var checkBlank = function(modified/*所有编辑过的和新增加的Record*/){ 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 = cm.findColumnIndex(name); //var rowIndex = grid.getStore().indexOfId(record.id); //根据行列索引找出组件编辑器 var editor = cm.getCellEditor(colIndex).field; //验证是否合法 var r = editor.validateValue(value); if(!r){ Ext.MessageBox.alert("验证","对不起,您输入的数据非法"); result = false; return; } }); }); return result; } });
转载于:https://www.cnblogs.com/muzi131313/articles/4121895.html
extjs editgrid增加一行相关推荐
- 如何在DataFrame 中优雅的增加一行,一列
<font color='darkgreen',size=4.5> 优雅的增加一行,一定要优雅! df=DataFrame(np.arange(16).reshape((4,4)), ...
- html删除一行增加一行,html怎么增加一行
html增加一行的方法:首先创建一个HTML示例文件:然后通过table标签创建一张表格:最后通过js代码"function addRow() {...}"方法使表格增加一行即可. ...
- PHP实现单击“添加”按钮增加一行表单项,并将所有内容插入到数据库中
PHP实现单击"添加"按钮增加一行表单项,并将所有内容插入到数据库中 效果图: html+jquery: <html> <head> <meta ht ...
- html 增加和删除一行,关于JS点击增加一行,点击删除一行的问题?
关于JS点击增加一行,点击删除一行的问题? 下面代码可以增加一行,和删除表格指定行. 删除后继续增加却不行了. 请问是怎么回事?应如何修改一下让他可以继续增加呢? var i=1; function ...
- 20200210:(leetcode 623)在二叉树中增加一行
在二叉树中增加一行 题目 算法与思路 代码实现 复杂度分析 题目 算法与思路 本题的思路在题目中已经为我们全部说明了,下面再列一遍就可以了 给定一个深度值 d (正整数),针对深度为 d-1 层的每一 ...
- Java实现 LeetCode 623 在二叉树中增加一行(遍历树)
623. 在二叉树中增加一行 给定一个二叉树,根节点为第1层,深度为 1.在其第 d 层追加一行值为 v 的节点. 添加规则:给定一个深度值 d (正整数),针对深度为 d-1 层的每一非空节点 N, ...
- LeetCode刷题实战623:在二叉树中增加一行
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- shell - 在文本中的前一行或后一行添加一行内容,指定行前后增加一行内容
linux的sed工具是十分强大的,能很容易的实现在某关键词的前一行或后一行增加内容.今天在批量修改tomcat的日志时就用到了该功能. 一.在某行的前一行或后一行添加内容 具休操作如下: #匹配行前 ...
- php表格增加一行数据,Excel表格如何增加一行
Excel表格增加一行的相关步骤: 第一步:打开Excel表格,导入表格文件. 第二步:打开EXCEL以后,根据需要选择插入行的位置,比如需要在14行和第15行的位置插入一行,这时选中第十五行,右击, ...
最新文章
- iOS 三种类型的Block
- 启动tomcat时jmx port被占用
- vmware workstation无法打开内核设备问题处理办法
- VNC轻松连接远程Linux桌面
- 浏览器是如何展示网页的
- 熟悉linux的安全与优化
- 员工离职时被HR回复“猝死了再说”!HR道歉:没控制好情绪
- osip2 代码分析
- 考试系统(用xml文件模拟数据库)
- Django中Form组件的使用
- 违反计算机信息网络国际联网安全,给你普及一下为了加强对计算机信息网络国际联网的安全保护,维护公共秩序和社会稳定,早在1997年12月30日【刁爱青吧】_百度贴吧...
- 腾讯手游助手选择不了服务器失败,腾讯手游助手启动模拟器失败的解决方法
- 信创操作系统--麒麟Kylin桌面版 (项目八 多媒体软件:图像查看、图像处理、音频播放、录音机)
- 思维导图之----javascript正则表达式知识树
- 多图丨入门必看:万字长文带你轻松了解CRM
- 恒星绕太阳转css,CSS3 宇宙/恒星/小行星动画
- 数学速算法_小数减法如何学?3种心算速算法,快捷有效,让孩子爱上数学
- 第三十七章 立方体贴图总结
- 张勋说:关于棒磨机的历史 你了解多少?(图文)
- [Errno 13] Permission denied:解决办法
热门文章
- Yahoo中国变脸?
- github充当服务器_如何创建充当链接HTML按钮
- 登高自卑 | 我的PyTorch入门与实践笔记
- 1048 数字加密 --非满分
- Python培训中有哪些是必须学的运算符
- 最新Java培训-NIO实战教程
- 【亲测有效】如何下载和安装Resilio BTSync
- js 实现精确加减乘除运算之BigDecimal.js
- spring cloud服务发现注解之@EnableDiscoveryClient与@EnableEurekaClient
- 【微服务】Spring-Boot整合Consul (自定义服务配置及健康检查)