这个小程序中包含了很多的参数配置和一些细节问题:仔细看看方便以后浏览熟悉一下语法
mode.js
//User类
Ext.define("user",{ //基本上定义一个类用的是define,定义一个对象用create实现的
extend:"Ext.data.Model", //这个类基本上是都是继承Ext.data.Model的,含有一个fields,可以理解为数据库中的表
fields:[
{name:'name',type:'string',sortable:true},
{name:'age',type:'int',sortable:true},
{name:'email',type:'string',sortable:true}
]
});
//User对象
var user = Ext.create("user",{}); //声明一个对象
Ext.create("Ext.data.Store",{ //这个对象是一个Ext.data.Store,实际上是用来存储数据的
model:'user', //一般情况下是一个代理,数据从后台取
storeId:'s_user',
proxy:{
type:'ajax',
url:'/extjs/extjs!getUserList.action',
reader:{
type:'json',
root:'topics'
},
writer:{
type:'json'
}
},
autoLoad:true
});
结合:01gridDemo.js
(function(){
Ext.onReady(function(){
Ext.QuickTips.init();
//穿件表格时候要 用表格的面板
var grid = Ext.create("Ext.grid.Panel",{
title : 'Grid Demo',//标题
frame : true,//面板渲染
//forceFit : true,//自动填充panel空白处
width : 600,
height: 280,
columns : [ //列模式
{text:"Name",dataIndex:'name',width:100},
{text:"age",dataIndex:'age',width:100},
{text:"email",dataIndex:'email',width:350,
field:{ //设置一个列模式,这样才能结合后边内容,让该列可编辑
xtype:'textfield',
allowBlank:false //一个验证的选项
}
}
],
tbar :[
{xtype:'button',text:'添加',iconCls:'table_add'},
{xtype:'button',text:'删除',iconCls:'table_remove',
handler:function(o){
//var gird = o.findParentByType("gridpanel");
var gird = o.ownerCt.ownerCt; //得到父级元素的父级元素【button的父级元素是toolbar,toolbar的父级元素师gridpanel】
var data = gird.getSelectionModel().getSelection();
if(data.length == 0){
Ext.Msg.alert("提示","您最少要选择一条数据");
}else{
//1.先得到所有ID的数据(name)
var st = gird.getStore();
var ids = [];
Ext.Array.each(data,function(record){
ids.push(record.get('name'));
})
//2.后台操作(delet)
Ext.Ajax.request({
url:'/extjs/extjs!deleteData.action',
params:{ids:ids.join(",")},//利用ajax将id传递到后台,
//这里的join()函数也要注意,将Array变成字符串串起来
method:'POST',
timeout:2000,
success:function(response,opts){
Ext.Array.each(data,function(record){
st.remove(record); //Ext.data.Store里面有个remove()方法,删除数据
})
}
})
//3.前端操作DOM进行删除(ExtJs)
}
}
},
{xtype:'button',text:'修改',iconCls:'table_edit'},
{xtype:'button',text:'查看',iconCls:'table_comm'}
],
dockedItems :[{
xtype:'pagingtoolbar',
store:Ext.data.StoreManager.lookup('s_user'),
dock:'bottom', //设置放置的位置
displayInfo:true
}],
plugins:[ //以插件的形式实现一些功能
Ext.create("Ext.grid.plugin.CellEditing",{ //可编辑的插件
clicksToEdit : 1 //单击多少下才能可编辑
})
],
selType:'checkboxmodel',//设定选择模式 默认的是单选
multiSelect:true,//运行多选
renderTo :'gridDemo',
store : Ext.data.StoreManager.lookup('s_user')
});
});
})();
分析帮助理解一下:
首先看看User.js
1)有一个User类,它是一个Model,有一个fields参数:实际上市数据库中表的意思。
2)有一个User对象,它是一个Store,用来存储数据的,但是这个store数据时从哪里来的呢?store必须基于proxy,然后type:ajax url:'/extjs/extjs!getUserList.action',,在后台通过JSON格式取出数据,Reader,将取出来的数据写到Model中;最后通过writer以JSON的格式格式响应到前台。
注意:这里指定了 model:'user', 指定是基于哪个:Model,
storeId:'s_user',让前台可以通过:01gridDemo.js中的store : Ext.data.StoreManager.lookup('s_user')绑定这个数据。
关于01gridDemo.js中的参数,代码中写得非常清楚了,仔细研读。