`
zccst
  • 浏览: 3322482 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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


如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

    Extjs可编辑的EditorGridPanel

    NULL 博文链接:https://zxf-noimp.iteye.com/blog/629629

    Extjs EditorGridPanel中ComboBox列的显示问题

    在EXTJS中,EditorGridPanel是一种可编辑的表格组件,它允许用户直接在表格单元格内编辑数据。然而,当在EditorGridPanel中嵌入ComboBox(下拉选择框)作为编辑器时,可能会遇到一个问题,即ComboBox显示的不是其...

    extjs 导入导出 Exel

    文件"Extjs利用服务器实现Excel数据导入editorgridpanel中显示_寒冰_新浪博客.mht"可能讲解了如何将Excel 文件的数据导入到EXTJS 的EditorGridPanel 中。导入过程一般包括: 1. 用户上传Excel 文件,EXTJS 通过...

    EXTJS讲解个人项目经历

    EXTJS 是一个强大的JavaScript前端框架,它主要用于构建富客户端应用,提供丰富的用户界面组件和灵活的可定制性。EXTJS 的核心在于其组件化的架构,允许开发者构建复杂的UI布局和功能丰富的应用程序。以下是对EXTJS...

    给Extjs的GridPanel增加“合计”行

    在EXTJS中,GridPanel是一种常用的组件,用于展示表格数据。在实际应用中,我们经常需要在GridPanel底部显示一行“合计”行,以便对某一列或多列的数据进行求和或其他统计操作。这篇博文“给Extjs的GridPanel增加...

    Extjs 性能优化 High Performance ExtJs

    另外需要注意的是,当 `form` 与 `EditorGridPanel` 结合使用时,应当特别注意表单的状态管理,确保每次提交都是有意义的。 #### 四、字符串与对象之间的转换 在 Extjs 开发过程中,常常需要将字符串转换为对象或...

    EXTJS实用开发指南_个人整理笔记.pdf

    1. 基本控件:Box、Button、ColorPalette、Component、Container、CycleButton、DataView、DatePicker、Editor、EditorGridPanel、Grid、PagingToolbar、Panel、ProgressBar、SplitButton、TabPanel、TreePanel、...

    ExtJS.in.Action

    本书第一章“A framework apart”中,深入探讨了ExtJS与其他框架的不同之处,如其对DOM操作的高度抽象化、高度定制化的组件系统等。这些特性使得开发者能够快速构建出高性能且用户友好的Web界面。 ### 基础概念 第...

    extjs扩展标记

    1. **EXTJS组件**:EXTJS的核心是它的组件模型,包括GridPanel、TreePanel、PropertyGrid、EditorGridPanel、TabPanel、FormPanel、Panel、Window、ToolTip和FieldSet等。这些组件可以组合起来创建复杂的用户界面,...

    Extjs in action

    - **编辑网格面板**:进一步探讨了`EditorGridPanel`,这是一种可以编辑表格数据的增强型网格面板。 - **数据视图和列表视图**:介绍了`DataView`和`ListView`组件,它们适用于显示大量数据。 - **图表组件**:讲解...

    extjs xtype

    10. `editorgrid` - `Ext.grid.EditorGridPanel`:可编辑的表格,允许用户直接在表格中修改数据。 11. `grid` - `Ext.grid.GridPanel`:标准的表格组件,用于展示数据。 12. `paging` - `Ext.PagingToolbar`:分页...

    ExtJS下拉列表树控件

    在ExtJS中,下拉列表树控件(ComboBox Tree)是常见的组件之一,它结合了下拉列表和树结构,提供了更丰富的用户界面。这个控件允许用户从一个层级化的数据结构中进行选择,非常适合于展示有层次关系的数据。 在创建...

    ExtJS 2.0实用简明教程

    22)可编辑表格EditorGridPanel 23)窗口基本应用 24)窗口分组 25)对话框 26)与服务器交互 27)Record 28)Store 29)TreePanel基本使用 30)使用树控件TreeNode 31)使用树控件TreeLoader 32)自定义TreeLoader

    EXTJS实用开发指南

    - 表单及元素组件:Editor、EditorGridPanel、GridPanel、PagingToolbar、Panel、ProgressBar、SplitButton、TabPanel、TreePanel、Viewport、Window等。 EXTJS通过其强大的组件模型和丰富的API,为开发者提供了...

    ExtJS2.0实用简明教程

    **ExtJS2.0实用简明教程** **一、ExtJS简介** ExtJS是一个JavaScript库,专注于构建富客户端Web应用程序。在2.0版本中,它提供了丰富的组件库,包括表格、面板、菜单、对话框等,使得开发者可以构建功能强大、用户...

    ExtJS增删改查

    ### ExtJS 增删改查详解 #### 一、ExtJS Grid的增删改查功能概述 在ExtJS框架中,Grid是一个非常关键的组件,主要用于展示表格数据,并支持数据的增删改查等基本操作。对于大多数Web应用程序而言,这种功能几乎是...

    extjs3连接mysql数据库实现增删查改功能

    你还可以添加编辑功能,例如使用`Ext.grid.EditorGridPanel`,使得用户可以直接在表格内编辑数据。 6. **表单组件(Form)**: 创建`Ext.form.FormPanel`用于输入和编辑数据。配置`fields`为你的数据模型,`url`为...

    ExtJs2.0简明教程

    面板是ExtJS中最常用的容器之一,它可以用来组织其他组件,并且支持多种布局方式。通过设置`title`、`bodyPadding`等属性来自定义面板的样式。 #### 4.2 选项面板TabPanel TabPanel是一种特殊的面板,它包含了多...

    extjs实例与学习资料

    因为前段时间有两个专案要用到extjs技术,所以自己学了一段时间,在专案才发现extjs的强大,无论对于开发者还是使用者他都是一场视觉盛宴,这里有我从学习开始做的一些笔记和例子也有自己收集的学习资料,里面包括...

Global site tag (gtag.js) - Google Analytics