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增加一行相关推荐

  1. 如何在DataFrame 中优雅的增加一行,一列

    <font color='darkgreen',size=4.5>    优雅的增加一行,一定要优雅! df=DataFrame(np.arange(16).reshape((4,4)), ...

  2. html删除一行增加一行,html怎么增加一行

    html增加一行的方法:首先创建一个HTML示例文件:然后通过table标签创建一张表格:最后通过js代码"function addRow() {...}"方法使表格增加一行即可. ...

  3. PHP实现单击“添加”按钮增加一行表单项,并将所有内容插入到数据库中

    PHP实现单击"添加"按钮增加一行表单项,并将所有内容插入到数据库中 效果图: html+jquery: <html> <head> <meta ht ...

  4. html 增加和删除一行,关于JS点击增加一行,点击删除一行的问题?

    关于JS点击增加一行,点击删除一行的问题? 下面代码可以增加一行,和删除表格指定行. 删除后继续增加却不行了. 请问是怎么回事?应如何修改一下让他可以继续增加呢? var i=1; function ...

  5. 20200210:(leetcode 623)在二叉树中增加一行

    在二叉树中增加一行 题目 算法与思路 代码实现 复杂度分析 题目 算法与思路 本题的思路在题目中已经为我们全部说明了,下面再列一遍就可以了 给定一个深度值 d (正整数),针对深度为 d-1 层的每一 ...

  6. Java实现 LeetCode 623 在二叉树中增加一行(遍历树)

    623. 在二叉树中增加一行 给定一个二叉树,根节点为第1层,深度为 1.在其第 d 层追加一行值为 v 的节点. 添加规则:给定一个深度值 d (正整数),针对深度为 d-1 层的每一非空节点 N, ...

  7. ​LeetCode刷题实战623:在二叉树中增加一行

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  8. shell - 在文本中的前一行或后一行添加一行内容,指定行前后增加一行内容

    linux的sed工具是十分强大的,能很容易的实现在某关键词的前一行或后一行增加内容.今天在批量修改tomcat的日志时就用到了该功能. 一.在某行的前一行或后一行添加内容 具休操作如下: #匹配行前 ...

  9. php表格增加一行数据,Excel表格如何增加一行

    Excel表格增加一行的相关步骤: 第一步:打开Excel表格,导入表格文件. 第二步:打开EXCEL以后,根据需要选择插入行的位置,比如需要在14行和第15行的位置插入一行,这时选中第十五行,右击, ...

最新文章

  1. iOS 三种类型的Block
  2. 启动tomcat时jmx port被占用
  3. vmware workstation无法打开内核设备问题处理办法
  4. VNC轻松连接远程Linux桌面
  5. 浏览器是如何展示网页的
  6. 熟悉linux的安全与优化
  7. 员工离职时被HR回复“猝死了再说”!HR道歉:没控制好情绪
  8. osip2 代码分析
  9. 考试系统(用xml文件模拟数据库)
  10. Django中Form组件的使用
  11. 违反计算机信息网络国际联网安全,给你普及一下为了加强对计算机信息网络国际联网的安全保护,维护公共秩序和社会稳定,早在1997年12月30日【刁爱青吧】_百度贴吧...
  12. 腾讯手游助手选择不了服务器失败,腾讯手游助手启动模拟器失败的解决方法
  13. 信创操作系统--麒麟Kylin桌面版 (项目八 多媒体软件:图像查看、图像处理、音频播放、录音机)
  14. 思维导图之----javascript正则表达式知识树
  15. 多图丨入门必看:万字长文带你轻松了解CRM
  16. 恒星绕太阳转css,CSS3 宇宙/恒星/小行星动画
  17. 数学速算法_小数减法如何学?3种心算速算法,快捷有效,让孩子爱上数学
  18. 第三十七章 立方体贴图总结
  19. 张勋说:关于棒磨机的历史 你了解多少?(图文)
  20. [Errno 13] Permission denied:解决办法

热门文章

  1. Yahoo中国变脸?
  2. github充当服务器_如何创建充当链接HTML按钮
  3. 登高自卑 | 我的PyTorch入门与实践笔记
  4. 1048 数字加密 --非满分
  5. Python培训中有哪些是必须学的运算符
  6. 最新Java培训-NIO实战教程
  7. 【亲测有效】如何下载和安装Resilio BTSync
  8. js 实现精确加减乘除运算之BigDecimal.js
  9. spring cloud服务发现注解之@EnableDiscoveryClient与@EnableEurekaClient
  10. 【微服务】Spring-Boot整合Consul (自定义服务配置及健康检查)