转自:https://zccst.iteye.com/blog/1328869

1.

  1 之前大多用Ext.grid.GridPanel,现在需要可编辑功能,发现比以前稍复杂一些。
  2 就是需要对指定列进行可编辑设置,并获取编辑后的值,存入数据库。
  3 1,对指定列进行可编辑设置
  4 比如下拉菜单、日历等。
  5
  6 2,获取编辑后的值
  7 可使用afteredit事件,并用panel的on()方法监听。
  8 当然也有beforeedit事件。
  9
 10 不过,也可以直接在可编辑的下拉菜单中使用listener监听并存入数据库。
 11 Js代码  收藏代码
 12
 13     listeners : {
 14         'select' : function(obj, data, index){
 15             selectedValue = data.data.name;
 16
 17         }
 18     }
 19
 20
 21 3,存入数据库
 22 使用Ext.Ajax.request({url:URL,params:"key:value",success:function(){},failure:function(){}});
 23
 24 例子
 25 Js代码  收藏代码
 26
 27     var store = new Ext.data.JsonStore({
 28         url: 'api/divide_suit.php?action=suitList',
 29         listeners:{
 30             'loadexception' : function(e){
 31                 alert(e.toString());
 32             }
 33         },
 34         fields:[
 35             {name:'id'},
 36             {name:'suit'},
 37             {name:'type'}
 38         ]
 39     });
 40     store.load();
 41
 42     var colM=new Ext.grid.ColumnModel([
 43         {header:"编号",dataIndex:'id',width:80,sortable:true},
 44         {header:"套餐名称",dataIndex:"suit",width:240,sortable:true},
 45         {header:"套餐类型",dataIndex:"type",sortable:true,width:160,
 46             editor:new Ext.form.ComboBox({
 47                 transform:"suitTypeList",
 48                 triggerAction:'all',
 49                 lazyRender:true
 50             })
 51         }
 52     ]);
 53
 54     var panel = new Ext.grid.EditorGridPanel({
 55         baseCls: 'x-plain',
 56         id:grid_id,
 57         title:'将套餐分组',
 58         closable:true,
 59         cm:colM,
 60         store:store,
 61         //autoExpandColumn:2  //自动将指定列扩展至最宽。
 62     });
 63
 64     panel.on("afteredit", afterEdit, panel); //EditorGridPanel的afteredit事件监听
 65     function afterEdit(obj){
 66            var r = obj.record;//获取被修改的行
 67            var l = obj.field; //获取被修改的列
 68            var suit_id   = r.get("id");
 69         var suit_name = r.get("suit");
 70            var suit_type = r.get(l);
 71         //alert('suit_id='+suit_id+' suit_name='+suit_name+'  suit_type='+suit_type);return;
 72            Ext.Ajax.request({
 73             url: 'api/divide_suit.php?action=edit_suit_type',
 74             params: "suit_id="+suit_id + "&suit_name="+suit_name + '&suit_type='+suit_type,
 75             success: function(resp,opts) {
 76                 var respText = Ext.util.JSON.decode(resp.responseText);
 77                 if(respText.status != 0){ alert(respText.msg); };
 78             },
 79             failure: function(resp,opts) { Ext.Msg.alert('保存失败', "请重试!"); }
 80         });
 81        }
 82
 83
 84 批注:其他几个参数
 85 1,grid_id
 86 2,渲染panel到什么地方。
 87
 88 下拉菜单还需要在html中写:
 89 Html代码  收藏代码
 90
 91     <select name="suitTypeList" id="suitTypeList">
 92       <option value='主流套餐'>主流套餐</option>
 93       <option value='均衡套餐'>均衡套餐</option>
 94       <option value='存储套餐'>存储套餐</option>
 95       <option value='其他套餐'>其他套餐</option>
 96     </select>
 97
 98
 99
100
101 附:获取值afteredit的几种写法
102 1,
103 grid.on('afteredit',function(e){ //获得Ext.grid.EditorGridPanel编辑信息
104       e.row;//修改過的行從0開始
105       e.column;//修改列
106       e.originalValue;//原始值
107       e.value;//新值
108     });
109 来源:http://blog.csdn.net/yanji94521/archive/2008/06/16/2
110
111 2,
112 grid.on("afteredit", afterEdit, grid); //EditorGridPanel的afteredit事件监听
113 function afterEdit(obj){
114         var r = obj.record;//获取被修改的行
115         var l = obj.field; //获取被修改的列
116         var id = r.get("id");
117         var lie = r.get(l);
118         Ext.Ajax.request({
119             url: '_action.php?action=edit',
120             params: "id=" + id + "&name=" + l + '&value=' + lie
121         );
122     }
123 来源:http://hi.baidu.com/_ollie/blog/item/c9f8fac305f7fe53b219a8f8.html
124
125 3,
126 grid.on("afteredit",afterEidt,grid);
127 function(obj)
128 {
129    obj.row;;//修改过的行从0开始
130    obj.column;//修改列
131    obj.originalValue;//原始值
132    obj.value;//修改后的值
133    obj.grid;//当前修改的grid
134    obj.field;//正在被编辑的字段名
135    obj.record;//正在被编辑的行
136
137 }
138
139
140
141
142 但是,transform属性是将现有的<select>元素转化为ComboBox,transform的值是<select>元素的id,dom节点或元素。在设置了transform的情况下,如果将包含这个ComboBox的panel销毁,再重新生成一个该panel的对象时,会出现错误:s is null。出错的位置在ext-all-debug.js中,就是找不到当前的select元素。目前,这个问题不知如何解决。
143
144 一种替代的方法是直接用store对ComboBox进行初始化。
145 Js代码  收藏代码
146
147     var colM=new Ext.grid.ColumnModel([
148             {header:"编号",dataIndex:'id',width:80,sortable:true},
149             {header:"套餐名称",dataIndex:"suit",width:240,sortable:true},
150             {header:"套餐类型",dataIndex:"type",width:160,
151                 editor:new Ext.form.ComboBox({
152                     id : 'x-combo-list-small',
153                     store: ['主流套餐','均衡套餐','存储套餐','其他套餐'],
154                     allowBlank:false,
155                     triggerAction: 'all',
156                     emptyText:'套餐类型...'
157                 })
158             }
159         ]);
160
161         var panel = new Ext.grid.EditorGridPanel({
162             baseCls: 'x-plain',
163             id:grid_id,
164             title:'将套餐分组',
165             closable:true,
166             cm:colM,
167             store:store,
168             frame:true,
169             clicksToEdit:1,//默认是点击2次
170             loadMask: {
171                 msg: '数据获取中,请稍候...'
172             },
173             region:'center'
174             //autoExpandColumn:2  //自动将指定列扩展至最宽。
175         });  

97. ExtJS之EditorGridPanel afteredit属性相关推荐

  1. ExtJs之gridPanel的属性表格,编辑表格,表格分页,分组等技巧

    这里藏的配置确实多.. 慢慢实践吧. <!DOCTYPE html> <html> <head><title>ExtJs</title>&l ...

  2. extjs获取元素name属性值_【ExtJS】各种获取元素组件方法

    1.get().getDom().getCmp().getBody().getDoc(): get(id/obj): get方法用来得到一个Ext元素,也就是类型为Ext.Element的对象, Ex ...

  3. Extjs中EditorGridPanel粘贴Excel复制的数据

    2019独角兽企业重金招聘Python工程师标准>>> Ext.onReady(function() {var store = new Ext.data.JsonStore({fie ...

  4. 第一个ExtJS练习(添加用户面板)

    1.[准备] 我是在visual studio里面建立了一个asp.net MVC项目,然后导入ExtJS必要的包,然后写的. ExtJS5.1版本下载:https://pan.baidu.com/s ...

  5. EXTJS开发过程遇到的一些问题的小结(转自麦田守望者)

    前做过一阵的ExtJs开发,从最傻的符号问题,到后来的渲染问题都碰到过.下面是个人开发过程中做的一些总结,多是问题的应对: 1.引入js和css文件时注意文件的路径问题: 2.导入ext-base.j ...

  6. Windows Server® 2008 Enterprise 组件服务 找不到 ”Microsoft Word 97 - 2003 文档“组件

    闲话少叙,直奔主题,维护一个项目,给客户添加了一个公文流转功能,主要使用金格office 中间件,本地环境运行一切ok,确认无误就给客户更新程序,在配置office组件服务时未找到 "Mic ...

  7. Swift 中 String 取下标及性能问题

    取下标 String String 用 String.Index 取下标(subscript)得到 Character,String.Index 要从 String 中获取 let greeting ...

  8. 如题,用C#语言 如何给下拉列表框动态添加数据?,C#复习题 单项选择题

    友情提示:此篇文章大约需要阅读 62分钟1秒,不足之处请多指教,感谢您的阅读. C#2018年期末复习题汇总-单项选择题 1.  C#语言取消了( B )语法. A. 循环 B.指针 C. 判断 D. ...

  9. 应用HTMLParser解释操作HTML内容

    根据"笑起来像你"发过来的原装代码展示如下: dfdasfads.java1importjava.util.Vector;23importorg.htmlparser.Attrib ...

  10. 正经人一辈子都用不到的 JavaScript 方法总结 (二)

    前言 现在有这样一个需求:用一个对象存储某学生的各科成绩,要求每次只能改变科目分数,不能再添加或者删除科目. 分析一下,这个需求其实就是需要创建一个固定属性的对象,其属性不可增删,但属性值可更改. 有 ...

最新文章

  1. C#设计模式-1、适配器模式(Adapter Pattern)(转载)
  2. 关键词与关键词之间的相关度计算
  3. php 向html追加元素,在PHP中存储兄弟元素的属性和内部HTML
  4. 前端清单之Vue.js篇
  5. ggplot2作图详解:标尺(scale)设置
  6. 冒泡排序,插入排序--- PYTHON
  7. linux docker安装_Linux -- Docker安装
  8. Python学习笔记之os模块
  9. python tkinter 窗口最大化
  10. choco安装软件包指定版本
  11. 欧美html游戏安卓,HTML5 Games - Rated M or for 18+ only
  12. myeclipse cracker
  13. Android Studio课堂总结05
  14. 《魔兽世界》中的小背景
  15. 自动化运维工具ansible(安装与模块介绍)
  16. 聊一聊ResNet系列(ResNet、ResNeXt)
  17. halo开源博客搭建微信小程序实现内容同步-总结
  18. 计算机重启恢复系统怎么操作,电脑只要关机重启系统就会自动还原?-电脑怎么系统还原...
  19. AI 入行那些事儿(8)人工智能 vs 人类智能
  20. PI3HDX12211ZHEX DIODES/美台 TQFN42 hdmi视频开关芯片

热门文章

  1. 如何去除图片背景变透明?透明背景图片怎么做?
  2. 面试字节、阿里等大厂后,总结了今年的 Java 面试必问的微服务面试题(含答案)
  3. 那些年我们常用的软件
  4. 外螺纹对照表_螺纹螺距对照表
  5. python 超像素分割
  6. SheetJS 读取excel文件转出json
  7. Ae:Keylight(1.2)(中英对照)
  8. Element 表单样式调整
  9. linux 串口驱动解析之2440
  10. 基于IC设计的实用ISP算法介绍