• Simple (Array)(数组)
• XML
• JSON
a.客户端的数据 定义数组 var store = new Ext.data.Store({ data: [ [ 1, "Office Space", "Mike Judge", "1999‐02‐19", 1, "Work Sucks", "19.95", 1 ],[ 3, "Super Troopers", "Jay Chandrasekhar", "2002‐02‐15", 1, "Altered State Police", "14.95", 1 ] //...more rows of data removed for readability...// ], reader: new Ext.data.ArrayReader({id:'id'}, [ 'id', 'title', 'director', {name: 'released', type: 'date', dateFormat: 'Y‐m‐d'}, 'genre', 'tagline', 'price', 'available' ] }); b.服务端的数据-xml var store = new Ext.data.Store({ url: 'movies.xml', //xml的路径 reader: new Ext.data.XmlReader({ record:'row', id:'id' }, [ 'id', 'coverthumb', 'title', 'director', {name: 'released', type: 'date', dateFormat: 'Y‐m‐d'}, 'genre', 'tagline', {name: 'price', type: 'float'}, {name: 'available', type: 'bool'} ]) }); store.load(); //加载到内存 c.josn var store = new Ext.data.Store({ url: 'movies.json', reader: new Ext.data.JsonReader({ root:'rows', id:'id' }, [ 'id', 'coverthumb', 'title', 'director', {name: 'released', type: 'date', dateFormat: 'Y‐m‐d'}, 'genre', 'tagline', {name: 'price', type: 'float'}, {name: 'available', type: 'bool'} ]) }); store.load(); 显示 Ext.onReady(function(){ // add your data store here var grid = new Ext.grid.GridPanel({ renderTo: document.body, frame:true, title: 'Movie Database', height:200, width:500, store: store, columns: [ {header: "Title", dataIndex: 'title'}, {header: "Director", dataIndex: 'director'}, {header: "Released", dataIndex: 'released', renderer: Ext.util.Format.dateRenderer('m/d/Y')}, {header: "Genre", dataIndex: 'genre'}, {header: "Tagline", dataIndex: 'tagline'} ] }); });
2.特殊字段的设置
a.日期
renderer: Ext.util.Format.dateRenderer('m/d/Y')
b.隐藏列
第一种
{header: 'Tagline', dataIndex: 'tagline', hidden: true}
第二种
Var colmodel = grid.getColumnModel();
colmodel.setHidden(colmodel.getIndexById('tagline'),true);
c.合并
{header: 'Title', dataIndex: 'title', renderer: title_tagline} function title_tagline(val, x, store){ return '<b>'+val+'</b><br>'+store.data.tagline; }
d.引入图片
{header: 'Cover', dataIndex: 'coverthumb', renderer: cover_image} function cover_image(val){ return '<img src=images/'+val+'>'; }
f.客户端排序
第一种
{header: 'Tagline', dataIndex: 'tagline', sortable: true}
第二种
var colmodel = grid.getColumnModel();
colmodel.getColumnById('tagline').sortable = true;
g.列的托拽
不可移动:enableColumnMove: false
h.selection model
• CellSelectionModel:让用户只能选择单一的单元格;
• RowSelectionModel:让用户选择完整的行;
• ColumnSelectionModel:让用户选择完整的列;
• CheckBoxSelectionModel:让用户使用 checkbox(复选框)来做行的选择;
例
sm: new Ext.grid.RowSelectionModel({ singleSelect: true, listeners: { rowselect: { fn: function(sm,index,record) { .Msg.alert('You Selected',record.data.title); } } } })
k.根据列名获得列的序列号
var cm = grid.getColumnModel(); //grid表格的名称
var pi = cm.getIndexById('price'); //price列的名称
l.分页
bbar: new Ext.PagingToolbar({
pageSize: 3, //每页最多显示3条
store: store //数据的来源
})
n.分组
var store = new Ext.data.GroupingStore({ url: 'movies.json', sortInfo: { field: 'genre', direction: "ASC" }, groupField: 'genre', reader: new Ext.data.JsonReader({ root:'rows', id:'id' }, // reader column model here //) }); 在grid定义中最后加上 view: new Ext.grid.GroupingView()