ExtJS之EditorGridPanel

作者:zccst

之前大多用Ext.grid.GridPanel,现在需要可编辑功能,发现比以前稍复杂一些。
就是需要对指定列进行可编辑设置,并获取编辑后的值,存入数据库。
1,对指定列进行可编辑设置
比如下拉菜单、日历等。

2,获取编辑后的值
可使用afteredit事件,并用panel的on()方法监听。
当然也有beforeedit事件。

不过,也可以直接在可编辑的下拉菜单中使用listener监听并存入数据库。

listeners : {
'select' : function(obj, data, index){
selectedValue = data.data.name;
...
}
}

3,存入数据库
使用Ext.Ajax.request({url:URL,params:"key:value",success:function(){},failure:function(){}});

例子

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中写:

<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进行初始化。

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 //自动将指定列扩展至最宽。
});


如果您觉得本文的内容对您的学习有所帮助,您可以微信:
[img]http://dl2.iteye.com/upload/attachment/0109/0668/fb266dfa-95ca-3d09-b41e-5f04a19ba9a1.png[/img]
单片机应用案例:ESP32 搭配 BH1750 光强传感器和 Web 服务器 在该应用案例中,我们将使用 ESP32 开发板作为主控制器,BH1750 光强传感器用于采集环境光强度数据,并通过 Web 服务器展示采集到的数据。步骤一:购买材料步骤二:连接硬件步骤三:编写代码我们将使用 Arduino IDE 编写代码,以下是主要代码:// WiFi 设置const char* ssid = “你的 WiFi 名称”;const char* password = “密码”;// Web 服务器实例// BH1750 实例// 获取当前光强度数据。 阅读详情

相关推荐

Ext.grid.EditorGridPanel:构建可编辑数据表格指南

Ext JS 是一个使用 JavaScript 编写的开源框架,它提供了一套丰富且易于使用的界面组件,这些组件极大地简化了 Web 应用程序的开发工作。它允许开发者创建复杂且功能丰富的用户界面,这些界面在不同的浏览器中都具有出色的响应性和兼容性。Ext JS 基于 MVC 架构,支持模块化和主题化,可定制性极强。在本章中,我们将概述 Ext JS 的主要特性,并深入了解它如何在 Web 开发中扮演重要的角色。

weixin_42502089的博客 1160

ExtJs学习笔记——Ext.grid.EditorGridPanel的使用

ExtJs学习笔记——Ext.grid.EditorGridPanel的使用 可编辑表格是指可以直接在表格的数据进行编辑,ExtJS的可编辑表格由Ext.grid.EditorGridPanel表示,xtype为editorgrid。使用EditorGridPanel与使用普通的GridPanel方式一样,区别只是在定义列信息的时候,可以指定某一类使用的编辑即可,下面看一个完整的示例。 <!...

漏气的可乐的博客 864

S5720I-SI系列交换机 快速入门_S5720I_

S5720I-SI系列交换机 快速入门,华为的交换机。

Ext.grid.EditorGridPanel

<br />1.界面修改(css style):<br />Extjs中界面风格与我们产品本身的风格有很大不同,从边框、选中行的颜色到鼠标移动到的行的颜色、菜单等,几乎都不同。Extjs对这些样式的设置都是由css完成的。如:<br />选中行的颜色就可用如下设置完成:<br />.x-grid3-row-selected{background:#c6e2ff!important;}<br />其他的都类似,只要找到对应的class,然后设置要修改的部分即可。<br /><br />2.属性的作用(Abou

性别男、爱好女 1319

Ext.grid.GridPanel

1、Ext.grid.GridPanel 主要配置项: store:表格的数据集 columns:表格列模式的配置数组,可自动创建ColumnModel列模式 autoExpandColumn:自动充满表格未用空间的列,参数为列id,该id不能为0 stripeRows:表格是否隔行换色,默认为fa...

zhaoqian888的专栏 652

ExtJS2.0实用简明教程——可编辑表格EditorGridPanel

可编辑表格是指可以直接在表格的单元格对表格的数据进行编辑,ExtJS中的可编辑表格由类Ext.grid.EditorGridPanel表示,xtype为editorgrid。使用EditorGridPanel与使用普通的GridPanel方式一样,区别只是在定义列信息的时候,可以指定某一列使用的编辑即可,下面来看一个简单的示例。Ext.onReady(function(){ var d

小肖的专栏 1929

可编辑表格:Ext.grid.EditorGridPanel

1、Ext.grid.EditorGridPanel      主要配置项:             clicksToEdit:设置点击单元格进入编辑模式的点击次数,默认为2            autoEncode:是否自动编码/解码HTML内容,默认为false            selModel:默认为Ext.grid.CellSelectionModel        主要方法: ...

程序员的天堂 717

extjs-EditorGridPanel

extjs-EditorGridPanel学习 this.grid.getStore().getModifiedRecords();   this.grid.getStore().commitChanges();   HTML&gt;    &lt;HEAD&gt;     &lt;TITLE&gt;可编辑表格面板EditorGridPanel&lt;/TITLE&gt;   ...

u011660647的博客 263

ExtJS EditorGridPanel 控制每一个单元格是否可以编辑

//loginUser 为当前登录人  //loginUser = '6651'; Ext.onReady(function() { Ext.QuickTips.init(); //空或零 返回 true function isNullORZero(value){ return (value == 0 || value == '')?true:false; } //将输入分数保存为

faith789510的专栏 3042

extjs EditorGridPanel禁止某些单元格编辑

EditorGridPanel加上listeners 'cellclick' : function(grid, rowIndex, columnIndex, e) { var record = grid.getStore().getAt(rowIndex); if(record.get('editable') == 'N' && columnIndex == 2) return f

嘻嘻哈哈的专栏 1万+

extjs EditorGridPanel

ext版本2.1系统中,大量用到了EditorGridPanelgrid的Cell进行编辑,如下图:EditorGridPanel原生的处理方式,对我们是不合适的:1. 用户输入值验证不通过,单元格没有特殊的高亮标示,跟普通的field的处理方案不统一。2. 单元格只有在点击编辑的情况下,才触发自定义的验证方法。3. 对于非负数等的验证,是通过禁止'键/鼠'操作来实现的,对...

weixin_33722405的博客 188

extjs定时刷新EditorGridPanel中的某一列

extjs定时刷新EditorGridPanel中的某一列 2010-01-07 09:36shy0man | 分类:JavaScript | 浏览2094次 如题, 一个用户信息EditorGridPanel中有一列显示用户在线状态,这一列必须定时刷新,而整个表格不刷新 简单说就是,只刷新EditorGridPanel中的某一列,不通过store.reload()刷新整个表格,因为刷

mengzhengjie的专栏 1259

ExtjsEditorGridPanel的beforeedit事件参数

beforeedit : ( Object e ) 只有一个事件(edit event)参数,但这个参数内容很丰富,可以满足很多需求。 参数分别如下: grid – 表格本身 record – 你要编辑的那一行记录 field – 你编辑的列名 value – 你编辑的值 row – 行号 column – 列号 cancel – 设这个为true或者return f

y6300023290的专栏 1万+

ExtjsEditorGridPanel粘贴Excel复制的数据

将excel的内容复制到EditorGridPanel中的单元格

2723

extjsEditorGridPanel中的ComboBox列中显示值的问题

在项目中使用了extjseditorgridpanel,但是其中的combobox在选择了相应的选项后,grid中显示的是值域(valueField)的值,而非意愿中的显示域(displayField)的值,经过一些搜索和尝试后找到了一个比较好的解决方法——在定义带combobox的列时配置其renderer的属性。 [code="extjs"] var assistItemStore = ...

leer的学习笔记本 310

Extjs教程_第六章_Editor_Grids(可编辑表格) (转载)

  在之前的一章中我们学习了如何在结构化的表格中显示用户可操作的数据。但是,这种表格有一个最大的限制,那就是用户无法自己编辑表格中的数据。幸运的是,Ext提供了EditorGridPanel这一控件,它支持用户对表格进行编辑——我们现在就对这一控件进行学习。它的工作形式类似于Excel,允许用户在点击单元格后进行数据的编辑操作。 在这章里,我们将会学到: ·         为用户提供连接...

正走向大牛的菜鸟 1203

ExtJS梦想之旅(八)--GridPanel和EditorGridPanel的使用

表格在web开发中会经常被使用到,是一种非常重要的组件,因此ExtJS在这方面做得也很出色,在这里也作为一个重点的组件来和大家分享,共同探讨一下。

一只不懈努力的程序猿,通过代码实验洞悉技术的本质。 5624

extjs4 tree panel grid 按每一行的内容指定editor

目前extjsgrid 似乎只能对一整列指定editor. 但在使用treepanel时 需要对每个行的数据指定不同的编辑器. 一直没有找到相关的方法,目前自己找了一个变通的方案. 实现如下:     //在cellclick中生成默认的editor,让程序调用到beforeedit     this.on("cellclick",this.onCellClick , this);

xcwenn的专栏 1321

Ext.grid.EditorGridPanel 实例

<br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Demo.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page">

liuxiIT的专栏 5329
上一篇: ExtJS正确的学习方式
下一篇: yii中引入js和css文件
zccst
博客等级 码龄19年 153粉丝 661原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值