ExtJs4入门之六: Grid组件简单示例


一:假数据+简单表格演示

var data=[
	           [1,'EasyJWeb', 'EasyJF','www.easyjf.com'],
	           [2,'jfox', 'huihoo','www.huihoo.org'],
	           [3,'jdon', 'jdon','www.jdon.com'],
	           [4,'springside', 'springside','www.springside.org.cn'] 
	  ];
	  var store=new Ext.data.SimpleStore({data:data,fields:["id","name","organization","homepage"]});
	  var grid=new Ext.grid.GridPanel({
	  renderTo:"gridbox",
	  title:"中国Java开源产品及团队",
	  height:150,
	  width:600,
	  columns:[{header:"项目名称",dataIndex:"name"},
	  {header:"开发团队",dataIndex:"organization"},
	  {header:"网址",dataIndex:"homepage"}],
	  store:store,
	  autoExpandColumn:2
	  });


二:简单的数据交互

1.表格js

Ext.onReady(function(){
	 
	//表格编辑插件 
	var cellEditor = Ext.create("Ext.grid.plugin.CellEditing",{
		clicksToEdit :2
	});
	
	Ext.QuickTips.init();//浮动提示
	var grid  = Ext.create("Ext.grid.Panel",{
		title : "Grid测试",
		renderTo : "divId",//渲染的锚点
		width : 600,
		height: 300,
		frame : true,//面板边框
		forceFit : true,//横行的拉抻
		//表头
		columns : [
		   {text:"userId" , dataIndex : "userId" ,width:"10%"},//dataIndex类会去寻找Store类或者对应Model中的键值
           {text:"name" , dataIndex : "name" ,width:"30%" },
           {text:"age" , dataIndex : "age" ,width:"30%",
           	field:{xtype : "textfield", allowBlank:false}
           },
           {text:"male" , dataIndex : "male" ,width:"10%"}
		],
		//获取M层指定的数据集合
		store : Ext.data.StoreManager.lookup("store_user"),
		//表头按钮数组
		tbar:[
			{ xtype:"button" , text:"添加" , iconCls:"table_add"},
			{ xtype:"button" , text:"删除" , handler:grid_delete},
			{ xtype:"button" , text:"修改" },
			{ xtype:"button" , text:"刷新" },
		],
		//组件集
		dockedItems:[
			//分页组件要和store挂钩, 否则是灰色的
			{ xtype:"pagingtoolbar" , dock:"bottom" , displayInfo:true,  store:Ext.data.StoreManager.lookup("store_user")}
		],
		//选择方式, 还有rowmodel,cellmodel什么的
		selType:'checkboxmodel',
		//多选框
		multiSelect:true,
		//可编辑的plugin插件
		plugins:[
			cellEditor
		]
	});
	
	
	
	//操作函数
	function grid_delete(btnObj)
	{
		//alert("==>grid_delete()"+btnObj.text);
		//按钮对象的父对象是工具条, 再父级才是所属表格
		var gird = btnObj.ownerCt.ownerCt;
		var dataArray = gird.getSelectionModel().getSelection();
		if( 0 == dataArray.length )
		{
			Ext.Msg.alert("提示","至少要选择一条数据");
		}
		else
		{
			var ids = [];
			$.each(dataArray , function(i,model){
				//alert( model.get("name") );//model.data.name
				ids.push( model.get("userId") );
			});
			
			Ext.Ajax.request({  
		        url:"extDemo/fakeData.jsp",
		        params:{'ids':ids},  
		        method:"POST",  
		        timeout:3000,//请求超时时间3秒   
		        success:function( response , options){  
		            //alert("==>成功" + response.responseText +"__" + options);  
		        	var store = gird.getStore();
		        	//成功后删除数据 , 还从dataArray拿值
		        	$.each(dataArray , function(i,model){
						store.remove(model);//store类的删除一个model
					});
		        },  
		        failure:function( response , options){  
		            alert("==>失败" + response.responseText +"__" + options);  
		        }  
		    });  
		}//end if else	
	}//end of function
});

2.所需Model的js

Ext.onReady(function(){
	
	//模型类
	Ext.define("User" ,{
		extend : "Ext.data.Model",
		fields:[
				{ name : "userId" , type : "int" , sortable : true },
		        { name : "name" , type : "string" , sortable : true },
		        { name : "age" , type : "int" , sortable : true },
		        { name : "male" , type : "string" , sortable : true }
		]
	});
	
	//实例化对象
	var user = Ext.create("User",{});
	
	//数据集合
	Ext.create("Ext.data.Store",{
		model : User,
		storeId : "store_user",//创建id,供组件调用
		autoLoad:true,//不自动加载的话就拿不到数据
		proxy:{
			type : "ajax",
			url: "extDemo/fakeData.jsp",
			reader:{
				type:"json",
				root:"users",
			},
			writer:{
				type:"json",
				
			}
		}
	})
	
});

3.模拟后台action

<%@ page language="java"  contentType="text/html" pageEncoding="UTF-8"%>  
<%@ page  import="java.lang.*" %>   
<%@ page  import="java.util.*" %>    
  
<%  
	//==>http://localhost:8080/ExtJs4_Demo/extDemo/fakeData.jsp
  	/*     */
    String param = request.getParameter("ids"); 
    if( null != param)
    { 
    	System.out.println("==>"+param);  
  	}
    
  	response.setCharacterEncoding("UTF-8");  
    response.getWriter().write( "{'total':2 ,'users':[{ 'userId':1, 'name':'rt涛' , 'age':24 ,'male':'M'} , { 'userId':2,'name':'kk' , 'age':24 ,'male':'F'}  ]}" );           
%> 


4.表格图标的样式文件

.table_add
{
	background-image:url(/ExtJs4_Demo/images/img/add_24x24.png)!important;
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值