`
smiky
  • 浏览: 257760 次
  • 性别: Icon_minigender_1
  • 来自: 天门
社区版块
存档分类
最新评论

ext中EditorGridPanel删除及添加及编辑(modified问题是bug吗)

阅读更多

 

//column model
		var eidtorGridColumnModel = new Ext.grid.ColumnModel([
			{
				header:'编号',dataIndex:'id',editor : new Ext.grid.GridEditor(new Ext.form.NumberField({
					allowBlank: false
				}))
			},
			{header:'姓名',dataIndex:'name',editor : new Ext.grid.GridEditor(new Ext.form.TextField({
					allowBlank: false
				}))
			},
			{
				header:'描述',dataIndex:'desc',editor : new Ext.grid.GridEditor(new Ext.form.TextField({
					allowBlank: false
				}))
			}
		]);
		/**
		 * 本想直接new 一个Record,一看API发现这句话
		 * Record (  [ Object data ],  [ Object id ] ) 
		 * 此构造函数不应该用来创建Record对象。 作为替代,使用create 创建一个Ext.data.Record的子类
		 */
		var MyRecord = Ext.data.Record.create([
			{name:'id',type:'Number'},
			{name:'name',type:'String'},
			{name:'name',type:'String'}
		]);
		
		var editorGridStore = new Ext.data.JsonStore(
					{
						fields : [
							'id','name','desc'
						],
						data : data2
					}
				);
		
		//new一个可编辑的表格
		var editorGrid = new Ext.grid.EditorGridPanel(
			{
				id:'eg',
				renderTo: 'editorGrid',
				cm : eidtorGridColumnModel,
				autoHeight:true,
				store : editorGridStore,//这里如果在内部new JsonStore的话,在事件中就无法引用到这个store了
				tbar : new Ext.Toolbar(
					[
						'-',
						{
							text:'添加',
							handler : function(){
								var newRow = new MyRecord(
									{
										id:'',
										name:'',
										desc:''
									}
								);
								editorGrid.stopEditing();
								editorGridStore.insert(0,newRow),
								editorGrid.startEditing(0,0);
							}
						},
						'-',
						{
							text:'删除',
							handler:function(){
								var sm = editorGrid.getSelectionModel();
								/**
								 * AbstractSelectionModel类有两个子类CellSelectionModel, RowSelectionModel-->CheckboxSelectionModel
								 * 对于EditorGridPanel获取的应该是CellSelectionModel的对象,那么就可以调用它的
								 * getSelectedCell()来获取选中的格子的数组的位置
								 */
								var cell = sm.getSelectedCell();//这个是获取选中的格子在数组中的位置,如:[0,1],以数组的形式表示
								var record = editorGridStore.getAt(cell[0]);//这里是选择了store中的第cell所在的行的record
								/**
								 * 这个record相当于store中的一条数据,store内有一个名为data的MixCollection,它用来存放reader解析来的数据,
								 * 因此可以用它来得到具体某一行的数据,如store.getAt(0)会得到第一行的record,record.get('name')可以得到相应
								 * 名称的值,而对store进行添加或者删除操作都会反映到html界面中来
								 */
								editorGridStore.remove(record);
							}
						},
						'-',
						{
							text:'保存',
							handler : function(){
								/**
								 * 对于做了修改的行,store.modified这个数组里记录下了修改行的信息
								 * record.json记录了原始数据,如果当前Record是通过 ArrayReader 或者一个JsonReader 创建时才存在
								 * record.data记录了修改后的数据
								 * record.fields存放的是列的信息(用MixCollection存的),可以取到列信息
								 * 
								 * 发现个问题(不知道是我还没有深入学习还是因为是个BUG):
								 * 一旦你修改了某个格子里面的数据,modified这个数组里面就会添加一条record,
								 * 如第一行数据为:1,sky,human
								 * 现在改成:2,sky,humn
								 * modified里抽对应的record为:json-->1,sky,human    data-->2,sky,human
								 * 我这个时候将2重新变为1,照理说这个时候modified应该清空,而ext却没做任何处理,
								 * modifed里面json与data都成了1,sky,human,这个时候如果进行保存操作的话会出现什么问题?
								 */
								var record = editorGrid.getStore().modified[0];
								alert(record.get('name'));
							}
						}
					]
				)
			}
		);
store进行操作时会触发相应的事件,我猜测在事件中会对调用这个store的组件进行重绘
分享到:
评论

相关推荐

    可编辑表格Ext.grid.EditorGridPanel

    Ext.grid.EditorGridPanel是Ext JS库中的一个组件,主要用于创建具有可编辑单元格的表格。这个组件在数据展示和编辑方面提供了丰富的功能,是构建数据密集型应用的理想选择。下面将详细阐述其特点、工作原理及如何...

    解决editorgridpanel编辑时视图向右移动的问题

    在使用EditorGridPanel进行数据编辑时,用户可能会遇到一个常见的问题,即在单元格编辑过程中,整个视图会向右移动,导致当前编辑的单元格离开视线。这给用户操作带来不便,影响了使用体验。本文将深入探讨这个问题...

    Ext可编辑的tree,EditorGridPanel

    因为项目的需求,实现一个可以编辑的tree,在网上找了一个牛人写的控件.Ext.ux.maximgb.tg.EditorGridPanel 把源码下载下来以后 不能运行,自己根据给出的列子,另写了一个小程序.不过并没有与数据库交互.

    ext 读取xml 可编辑grid

    在EXT JS框架中,"ext 读取xml 可编辑grid"是一个常见的需求,涉及到的主要知识点包括EXT的数据对象、EditorGridPanel的使用以及EXT对XML数据格式的支持。下面将详细阐述这些内容。 EXT JS是一个强大的JavaScript库...

    Extjs可编辑的EditorGridPanel

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

    Ext TreePanel

    通过在列配置中指定`editor`属性,我们可以为每个单元格添加编辑器,例如`TextField`、`ComboBox`等,使得用户可以直接在网格中修改数据。编辑时,`EditorGridPanel`会使用这些编辑器来控制用户的输入,并在用户完成...

    Extjs EditorGridPanel中ComboBox列的显示问题

    为了解决这个问题需要在EditorGridPanel的ColumnModel中显示ComboBox的地方使用renderer属性,重新渲染,方法如下: 代码如下: //部门列表 var comboxDepartmentStore = new Ext.data.Store({ proxy: new Ext.data....

    Ext组件说明 Ext组件概述

    ### Ext组件概述与初学者指南 #### 一、Ext组件概览 Ext是一个功能丰富的JavaScript框架,用于构建桌面级Web应用程序。它提供了大量的组件和工具,使得开发者能够快速且高效地构建用户界面。对于初学者而言,理解...

    EXT2.0 GRID 示例

    3. **行编辑**:EXT GRID支持行内编辑,用户可以直接在表格中修改数据,这需要结合EditorGridPanel和Form Field组件来实现。 4. **排序和过滤**:GRID可以实现列点击排序,通过配置`sortable`属性和`sortInfo`对象...

    Ext组件描述,各个组件含义

    **2.5 Editor Grid Panel (Ext.grid.EditorGridPanel)** - **xtype**: `editorgrid` - **功能描述**:Editor Grid Panel 是一个支持行级编辑的网格面板。 - **主要用途**:适合于需要对表格中的数据进行编辑的场景...

    Ext 连接数据库的相关操作

    在这个例子中,我们将探讨如何使用EXT连接SQL Server数据库,实现Editgridpanel的数据展示、分页、查询和删除功能。 首先,EXT中的Editgridpanel是一个可编辑的表格组件,用于显示和编辑数据。它集成了数据绑定和行...

    Ext.net后台分页增删改

    在"Ext.NET后台分页增删改"这个主题中,我们将探讨如何利用Ext.NET实现数据库后台分页、树形视图操作以及Grid面板的CRUD(创建、读取、更新和删除)功能。 首先,让我们深入了解一下后台分页。在Ext.NET中,为了...

    EXT_JS实用开发指南

    其中,基本组件包括Box、Button、ColorPalette、Component、Container等,工具栏组件如Toolbar、TBButton,而表单及元素组件则涉及Editor、EditorGridPanel等。 EXT JS的强大之处在于它丰富的组件库和高度可定制性...

    Ext3.0 api帮助文档

    - **Ext.grid.EditorGridPanel**: 提供单元格级别的编辑功能。 6. **表单(Forms)** - **Ext.form.FormPanel**: 创建表单的容器,支持多种表单元素和验证。 - **Ext.form.Field**: 表单字段类,如文本框、选择...

    EXT核心API详解

    73、Ext.grid.EditorGridPanel类 ……… 62 74、Ext.grid.PropertyGrid类 …………… 65 1、Ext类 addBehaviors(Object obj) : void 对选择的元素 应用事件侦听器,事件名以@附加在结尾,例如 addBehaviors({ ...

    ext的edittreegrid实现

    在EXT JS库中,"ext的edittreegrid实现"是一种功能强大的组件,它结合了树形视图(Tree)和编辑网格(EditorGrid)的功能,允许用户在具有层次结构的数据上进行直观的编辑操作。这个组件对于那些需要管理结构化且...

    ext3 gridRowEditor本地数据简单demo,有注释

    标题中的"ext3 gridRowEditor本地数据简单demo"是指基于ExtJS 3.x版本的一个示例,它展示了如何使用GridPanel的RowEditor组件来编辑表格数据。ExtJS是一个流行的JavaScript库,用于构建富客户端应用程序,而ext3是其...

    Ext表格控件和树控件

    ### Ext表格控件和树...通过以上内容,我们可以看到 `GridPanel`、`EditorGridPanel` 和 `TreePanel` 在 Ext JS 中的应用非常广泛,它们提供了强大的数据展示和编辑能力,同时也为开发者提供了高度的灵活性和定制性。

    Ext grid合并单元格

    根据提供的文件信息,我们可以深入探讨如何在 Ext JS 中实现 Grid 的单元格合并功能。此案例主要涉及到了自定义 GridView 的 `renderHeaders` 方法来达到单元格合并的目的,并且还涉及了模板(Template)的使用、...

Global site tag (gtag.js) - Google Analytics