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

1.

 之前大多用Ext.grid.GridPanel,现在需要可编辑功能,发现比以前稍复杂一些。
就是需要对指定列进行可编辑设置,并获取编辑后的值,存入数据库。
1,对指定列进行可编辑设置
比如下拉菜单、日历等。 2,获取编辑后的值
可使用afteredit事件,并用panel的on()方法监听。
当然也有beforeedit事件。 不过,也可以直接在可编辑的下拉菜单中使用listener监听并存入数据库。
Js代码 收藏代码 listeners : {
'select' : function(obj, data, index){
selectedValue = data.data.name; }
} 3,存入数据库
使用Ext.Ajax.request({url:URL,params:"key:value",success:function(){},failure:function(){}}); 例子
Js代码 收藏代码 var store = new Ext.data.JsonStore({
url: 'api/divide_suit.php?action=suitList',
listeners:{
'loadexception' : function(e){
alert(e.toString());
}
},
fields:[
{name:'id'},
{name:'suit'},
{name:'type'}
]
});
store.load(); var colM=new Ext.grid.ColumnModel([
{header:"编号",dataIndex:'id',width:80,sortable:true},
{header:"套餐名称",dataIndex:"suit",width:240,sortable:true},
{header:"套餐类型",dataIndex:"type",sortable:true,width:160,
editor:new Ext.form.ComboBox({
transform:"suitTypeList",
triggerAction:'all',
lazyRender:true
})
}
]); var panel = new Ext.grid.EditorGridPanel({
baseCls: 'x-plain',
id:grid_id,
title:'将套餐分组',
closable:true,
cm:colM,
store:store,
//autoExpandColumn:2 //自动将指定列扩展至最宽。
}); panel.on("afteredit", afterEdit, panel); //EditorGridPanel的afteredit事件监听
function afterEdit(obj){
var r = obj.record;//获取被修改的行
var l = obj.field; //获取被修改的列
var suit_id = r.get("id");
var suit_name = r.get("suit");
var suit_type = r.get(l);
//alert('suit_id='+suit_id+' suit_name='+suit_name+' suit_type='+suit_type);return;
Ext.Ajax.request({
url: 'api/divide_suit.php?action=edit_suit_type',
params: "suit_id="+suit_id + "&suit_name="+suit_name + '&suit_type='+suit_type,
success: function(resp,opts) {
var respText = Ext.util.JSON.decode(resp.responseText);
if(respText.status != 0){ alert(respText.msg); };
},
failure: function(resp,opts) { Ext.Msg.alert('保存失败', "请重试!"); }
});
} 批注:其他几个参数
1,grid_id
2,渲染panel到什么地方。 下拉菜单还需要在html中写:
Html代码 收藏代码 <select name="suitTypeList" id="suitTypeList">
<option value='主流套餐'>主流套餐</option>
<option value='均衡套餐'>均衡套餐</option>
<option value='存储套餐'>存储套餐</option>
<option value='其他套餐'>其他套餐</option>
</select> 附:获取值afteredit的几种写法
1,
grid.on('afteredit',function(e){ //获得Ext.grid.EditorGridPanel编辑信息
e.row;//修改過的行從0開始
e.column;//修改列
e.originalValue;//原始值
e.value;//新值
});
来源:http://blog.csdn.net/yanji94521/archive/2008/06/16/2 2,
grid.on("afteredit", afterEdit, grid); //EditorGridPanel的afteredit事件监听
function afterEdit(obj){
var r = obj.record;//获取被修改的行
var l = obj.field; //获取被修改的列
var id = r.get("id");
var lie = r.get(l);
Ext.Ajax.request({
url: '_action.php?action=edit',
params: "id=" + id + "&name=" + l + '&value=' + lie
);
}
来源:http://hi.baidu.com/_ollie/blog/item/c9f8fac305f7fe53b219a8f8.html 3,
grid.on("afteredit",afterEidt,grid);
function(obj)
{
obj.row;;//修改过的行从0开始
obj.column;//修改列
obj.originalValue;//原始值
obj.value;//修改后的值
obj.grid;//当前修改的grid
obj.field;//正在被编辑的字段名
obj.record;//正在被编辑的行 } 但是,transform属性是将现有的<select>元素转化为ComboBox,transform的值是<select>元素的id,dom节点或元素。在设置了transform的情况下,如果将包含这个ComboBox的panel销毁,再重新生成一个该panel的对象时,会出现错误:s is null。出错的位置在ext-all-debug.js中,就是找不到当前的select元素。目前,这个问题不知如何解决。 一种替代的方法是直接用store对ComboBox进行初始化。
Js代码 收藏代码 var colM=new Ext.grid.ColumnModel([
{header:"编号",dataIndex:'id',width:80,sortable:true},
{header:"套餐名称",dataIndex:"suit",width:240,sortable:true},
{header:"套餐类型",dataIndex:"type",width:160,
editor:new Ext.form.ComboBox({
id : 'x-combo-list-small',
store: ['主流套餐','均衡套餐','存储套餐','其他套餐'],
allowBlank:false,
triggerAction: 'all',
emptyText:'套餐类型...'
})
}
]); var panel = new Ext.grid.EditorGridPanel({
baseCls: 'x-plain',
id:grid_id,
title:'将套餐分组',
closable:true,
cm:colM,
store:store,
frame:true,
clicksToEdit:1,//默认是点击2次
loadMask: {
msg: '数据获取中,请稍候...'
},
region:'center'
//autoExpandColumn:2 //自动将指定列扩展至最宽。
});

97. ExtJS之EditorGridPanel afteredit属性的更多相关文章

  1. ExtJS组件的xtype属性列表

    ExtJS的应用界面是由很多小部件组合而成的,这些小部件被称作“组件(Component)”,所有组件都是Ext.Component的子类,Ext.Component提供了生命周期管理包括初始化.渲染 ...

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

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

  3. extjs中第一次访问有效,第二次访问出现部分组件无法显示的,动态改变组件的label值的方法,ExtJs中组件最好少使用ID属性(推荐更多使用Name属性)

    在公司做的一个OA项目中,曾经就遇到了这样的一个问题:(我是在jsp中的div中将js render到div中去的)第一次访问此界面的时候,formpanel上的组件能正常显示,不刷新整个页面的前提下 ...

  4. Extjs GridPanel 中放入 Combox显示问题

    http://weijun8611-126-com.iteye.com/blog/566201 在项目中使用了extjs的editorgridpanel,但是其中的combobox在选择了相应的选项后 ...

  5. ExtJs基础知识总结:Dom、IFrame和TreePanel、TabPanel(三)

    概述 ExtJs是另外一种操作封装JavaScript的类库与Jquery同类.所以对Dom的操作也是支持的,比如修改Div内Html内容等操作.有几个问题需要思考下: 1.ExtJs也支持IFram ...

  6. EXTJS项目实战经验总结一:日期组件的change事件:

    1  依据选择的日期,加载相应的列表数据,如图:   开发说明    1 开发思路: 在日期值变化的事件中获得选择后的日期值,传给后台,然后从后台加载相应的数据 2 问题:在查看extjs2.2 的a ...

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

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

  8. CSS之样式属性(背景固定、圆形头像、模态框)

    CSS属性 一.宽和高 width属性可以为元素设置宽度. height属性可以为元素设置高度. 块级标签才能设置宽度,内联标签的宽度由内容来决定. div {width: 1000px;backgr ...

  9. extjs gridpanel 操作行 得到选中行

    extjs gridpanel 操作行 得到选中行的列 在Extjs 3.2.0上适合 var model = grid.getSelectionModel(); model.selectAll(); ...

随机推荐

  1. mysql自动增长的有关问题,怎么恢复从1开始

    mysql自动增长的问题,如何恢复从1开始在一个表中我设置到autoid为自动增长列例如有如下数据 1 张三 男 202 王五 男 223 李四 男 254 陈大 男 19 现在我把 autoid=3 ...

  2. N的阶乘末尾有多少个零?

    在创联ifLab的招新问答卷上看到这么一题 核心问题是: 求N!(N的阶乘)的末尾有多少个零? 由于在N特别大的时候强行算出N!是不可能的,所以肯定要另找方法解决了. 首先,为什么末尾会有0?因为2* ...

  3. 170925_1 Python socket 创建TCP的服务器端和客户端

    [Python版本]3.6 [遇到的问题] 客户端和服务器端都遇到:TypeError: a bytes-like object is required, not 'str' [解决方案] 参考:ht ...

  4. SPPNet论文翻译-空间金字塔池化Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    http://www.dengfanxin.cn/?p=403 原文地址 我对物体检测的一篇重要著作SPPNet的论文的主要部分进行了翻译工作.SPPNet的初衷非常明晰,就是希望网络对输入的尺寸更加 ...

  5. webstrom常用键

    常用快捷键—Webstorm入门指南 提高代码编写效率,离不开快捷键的使用,Webstorm拥有丰富的代码快速编辑功能,你可以自由配置功能快捷键. 快捷键配置 点击“File”-> “setti ...

  6. centos7安装个人网盘owncloud

    现在个人资料越来越重要,网络速度也已经满足日常需要,网盘已经是生活着存取个人数据不可缺少的工具. 下面在linxu centos7下面安装owncloud搭建自己私人网盘: 1.新建一个账号用来安装个 ...

  7. 1 TaskQueue 实现Task 队列

    class Program { static void Main(string[] args) { List<Person> list = new List<Person>() ...

  8. JavaScript day4(逻辑运算符)

    逻辑运算符 逻辑运算符用于测定变量或值之间的逻辑 逻辑与运算符:&&.同时满足(and). 通过if语句的嵌套来实现: if (num > 5) { if (num < 1 ...

  9. 3.git高级篇总结

    阅读 Git 原理详解及实用指南 记录 高级 1:不喜欢merge的分叉,用rebase吧 介绍的是 rebase 指令,它可以改变 commit 序列的基础点.它的使用方式很简单: git reba ...

  10. Django的基础教程

    学Django需要什么基础? 1. Django是 python 语言写的一个Web框架包,所以你得知道一些 Python 基础知识. 2. 其次你最好有一些做网站的经验,懂一些网页 HTML, CS ...