`
leoizumi
  • 浏览: 93922 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Extjs 中的GridPanel学习例子二

阅读更多

Ext.onReady(function(){

	//建立列模型
	var cm = new Ext.grid.ColumnModel([
	   {header:'编号',dataIndex:'id',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:true}))},
	   {header:'名称',dataIndex:'name',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:true}))},
	   {header:'描述',dataIndex:'descn',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:true}))}
	]);
	
	//数据的Json格式
	var data=[
	 ['1','name1','descn1'],
	 ['2','name2','descn2'],
	 ['3','name3','descn3'],
	 ['4','name4','descn4'],
	 ['5','name5','descn5']
	];
	
	//数据的处理中心,主要有两个重点的熟悉:proxy(负责如何获取数据),reader(负责如何解释数据)
	var store = new Ext.data.Store({
	   proxy:new Ext.data.MemoryProxy(data),
	   reader:new Ext.data.ArrayReader({},[
	     {name:'id'},//对应着列模型的id
	     {name:'name'},//对应着列模型的name
	     {name:'descn'}//对应着列模型的descn
	   ])
	});
	
	//自定义对象
	var Record = new Ext.data.Record.create([
	  {name:'id',type:'string'},
	  {name:'name',type:'name'},
	  {name:'descn',type:'descn'}
	]);
	
	store.load();
	
	//GridPanel,这里的EditorGridPanel继承了父类
	var grid = new Ext.grid.EditorGridPanel({
		renderTo:'myid',
		cm:cm,
		 width:450,
	     height:130,
		store:store,
		loadMask:true,
		tbar:new Ext.Toolbar(['-',
		  {text:'添加一行',
		   handler:function(){
		    // alert("add");
		       
		   	var initValue={id:'',name:'',descn:''};
		   	var p = new Record(initValue);
		   	grid.stopEditing();
		   	store.insert(0,p);
		   	grid.startEditing(0,0);
		   	
		   	p.dirty=true,
		   	p.modified=initValue;
		   	if(store.modified.indexOf(p)==-1){
		   	  store.modified.push(p);
		   	}
		   	
		   }
		  },
		  '-',
		  {text:'删除一行',
		   handler:function(){
		    // alert("delete");
		   	Ext.Msg.confirm('信息','确定要删除',function(btn){
		   	   if(btn=='yes'){
		   	       var sm = grid.getSelectionModel();
		   	       var cell = sm.getSelectedCell();
		   	       var record = store.getAt(cell[0]);
		   	       store.remove(record);
		   	   }
		   	});
		   }
		  },
		  '-',
		  {text:'保存',
		   handler:function(){
		     var m = store.modified.slice(0);
		       for(var i=0;i<m.length;i++){
		          var record = m[i];
		          var fields=record.fields.keys;
		          
		          for(var j=0;j<fields.length;j++){
		             var name = fields[j];
		             var value = record.data[name];
		             
		             
		             var collIndex = cm.findColumnIndex(name);//取得列索引
		             var rowIndex = store.indexOf(record.id);//取得行的索引
		             
		             var editor =cm.getCellEditor(collIndex).field;
		             if(!editor.validateValue(value)){
		                Ext.Msg.alert('提示','请确保输入的数据正确',function(){
		                   grid.startEditing(rowIndex,collIndex);
		                });
		                return;
		             }
		          }
		       }
		      
		      var jsonArray=[];
		      Ext.each(m,function(item){
		        jsonArray.push(item.data);
		      });
		      //提交
		      Ext.lib.Ajax.request(
		       'POST',
		       'grid.jsp',
		       {success:function(response){
		          Ext.Msg.alert('信息',response.responseText,function(){
		            store.reload();
		          });
		       },failure:function(){
		          Ext.Msg.alert('错误','与后台联系的时候出现问题');
		       }},
		       'data='+encodeURIComponent(Ext.encode(jsonArray))//吧EditorGrid的数据封装成json,传到后台
		      );
		   }
		  },
		  '-'
		]),
		
		viewConfig:{ forceFit:true }
	  
	});
	
});
 
分享到:
评论

相关推荐

    ExtJS 表格面板GridPanel完整例子

    ExtJS表格面板(GridPanel)是Sencha Ext JS框架中的一个核心组件,它用于展示大量结构化数据。在本文中,我们将深入探讨如何创建并使用一个完整的ExtJS GridPanel实例,以及与其相关的源码和工具。 首先,让我们...

    EXTJS_GridPanel_ColumnModel_列的宽度随数据变化而变化

    EXTJS的GridPanel是其组件库中的核心组件之一,用于展示数据网格,广泛应用于Web应用的数据展示。在EXTJS中,ColumnModel是用来定义GridPanel列结构和行为的关键部分。这篇博客"EXTJS_GridPanel_ColumnModel_列的...

    Extjs2.02 Gridpanel

    EXTJS GridPanel 是EXTJS库中的核心组件之一,尤其在EXTJS 2.02版本中,它提供了强大的表格展示和交互功能,对于初学者来说极具学习价值。GridPanel不仅能够处理基本的表格操作,如单选、多选、排序、改变列宽等,还...

    extjs gridpanel例子和简单应用

    本文将通过一个具体的例子来详细介绍ExtJS中`GridPanel`的基本用法以及如何利用`HttpProxy`、`JsonReader`、`Store`等关键对象来构建动态数据展示界面。 #### 二、核心概念介绍 1. **HttpProxy** - `HttpProxy`是...

    Extjs4 GridPanel 的几种样式使用介绍

    在本文中,我们将深入探讨ExtJS4中的GridPanel样式及其选择模式。GridPanel是ExtJS框架中用于展示数据的一种重要组件,它允许用户以表格形式查看、操作和管理大量信息。 首先,我们来看一个简单的GridPanel示例。在...

    extjs+php分页例子

    总之,这个"extjs+php分页例子"是一个很好的学习资源,它展示了如何利用ExtJS的GridPanel组件和PHP配合,实现高效且用户友好的分页功能。通过深入研究这个实例,开发者不仅可以掌握ExtJS和PHP的结合使用,还能了解到...

    Ext.net实现GridPanel拖动行、上移下移排序功能DEMO

    对于GridPanel中拖动选中行排序的实现,网上有不少ExtJs实现的例子,但是没有找到使用Ext.net实现的,正好最近有个需求要使用,干脆来写一个。 DEMO功能说明: 1、拖动GridPanel选中行到新位置排序。 2、在拖动结束...

    ExtJs3.1目前所有例子源代码

    这个压缩包中的源代码实例涵盖了以上所有知识点,通过查看和学习这些示例,开发者可以深入理解ExtJs 3.1的功能,并快速上手实践。对于任何想要掌握ExtJs的人来说,这是一份不可多得的学习材料。

    extjs动态生成表格,前台+后台

    在我们的例子中,我们将看到如何通过JavaScript代码来动态构建GridPanel。 在前端部分,HTML代码设置了必要的资源引用,包括CSS样式表和ExtJS的JavaScript库。`&lt;div id="grid_div"&gt;&lt;/div&gt;`这部分是用来放置...

    extjs4.x学习笔记

    这个例子展示了如何定义列和数据,以及如何将数据加载到GridPanel中。 **5. 数据分页和自定义渲染** 在ExtJs 4.x中,GridPanel支持数据分页,可以通过配置Store的proxy实现。对于复杂的数据展示,还可以定义渲染器...

    EXTJSEXT实例GridPanel.

    EXTJS是一个基于JavaScript的用户界面库,用于构建富客户端应用。...通过学习和实践这个例子,开发者可以快速掌握EXTJS中数据展示的核心技术。配合EXT提供的图片资源,可以帮助理解GridPanel在实际应用中的视觉效果。

    extjs3.0例子

    在“extjs3.0例子”中,你可以通过源码学习如何实例化这些对象,如何配置它们的属性,以及如何利用EXTJS的事件系统来响应用户交互。此外,EXTJS的API文档是学习的关键资源,它详细介绍了每个类的方法和属性。 在...

    深入浅出ExtJs书中代码

    通过对"深入浅出ExtJS"第2版中的代码进行学习,你将能够深入理解ExtJS的工作原理,从而能够更高效地开发高质量的Web应用程序。书中的例子通常是理论知识的最佳实践,它们可以帮助你巩固理论知识,提高实际开发技能。...

    ExtJs官方网站中文的入门指南 javascript

    本节将通过一个简单的例子演示如何使用ExtJs创建动态页面。 ##### **2.1 解压安装** - 将下载好的压缩包解压至合适的目录(例如`C:\code\Ext\v1.0`)。 - 在此目录下创建一个名为`tutorial`的文件夹,用于存放示例...

    Ext GridPanel 中实现加链接操作

    #### 二、在 GridPanel 中添加链接 为了在 Ext GridPanel 的单元格中添加可点击的链接,我们需要使用 `renderer` 函数来定制单元格的内容。具体步骤如下: 1. **创建 GridPanel**: ```javascript var store = ...

    Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法

    在ExtJS中,GridPanel是用于展示数据的组件,它以表格的形式呈现各种信息。GridPanel提供了丰富的功能,包括排序、分页、列选择等。然而,在实际开发中,我们可能会遇到一个问题,即隐藏的列仍然会在列菜单的`...

    extjs实例与学习资料

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

    Ext的gridpanel控件二次加载问题

    在这个例子中,`initGrid`函数会检查`myGrid`是否已经存在,如果不存在则创建一个新的GridPanel实例。如果`myGrid`已存在,我们就直接更新它的数据源,避免了重新创建GridPanel导致的问题。 尽管这种解决方案在很多...

Global site tag (gtag.js) - Google Analytics