表格由Ext.grid.GridPanel來定義,繼承Ext.Panel。表格必須包含列定義信息,並指定表格的數據存儲器。表格的列定義信息由Ext.grid.ColumnModel來定義,數據存儲信息由Ext.data.Stroe(Ext.data.SimpleStore,Ext.data.JsonStore,Ext.data.GroupingStore)來定義。
類Ext.grid.GridView,GridView類是對Ext.grid.GridPanel用戶界面的封裝。爲 產生特殊的現實效果,可以該類的一些方法來控制用戶界面。注意請不要改變用戶界面的DOM結構。
ColumnModel負責創建表格的列信息,表格的列信息包含首部的顯示文本(header),對應的記錄集字段(dataIndex),列是否可排序(sortable),列渲染函數(renderer),寬度(width),格式化(format)信息
一個完整的表格代碼:
//複選框,身兼兩職,既要放在ColumnModel裏,又要放在GridPanel裏
var sm = new Ext.grid.CheckboxSelectionModel();
var cm = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(), // 自動顯示行號
sm, // columnmodel裏
{header: "姓名",
dataIndex: "name",// 對應的記錄集字段
enableColumnMove:true, // 列可以拖放
enableColumnResize:true, // 列寬度可變
width: 80, // 捨得列的寬度
sortable: true, //使列可排序
renderer: function(value){// 渲染函數(renderer函數的參數有多個,詳細可以查看API文檔)
if(value.length> 6){
return"<span style='color:red;'>"+value+"</span>"
}else{
return"<span style='color:blue;'>"+value+"</span>";
}
}
},
{header: "年齡",dataIndex: "age"}
]);
var store = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:"<%=path%>/test"}),
reader: new Ext.data.JsonReader({
totalProperty: "total", // 該屬性指定記錄數的總數
root: "root", // 該屬性指定包含所有行對象的數組
idProperty: "id" // 記錄每一行對象記錄id的字段(可選)
},[
{name: "id"},
{name: "name",mapping:"na_me"},
{name: "age",mapping:"a_ge"}
])
});
var grid = new Ext.grid.GridPanel({
renderTo: "grid",
cm: cm,
sm: sm,
store: store,
autoHeight: true,
bbar: new Ext.PagingToolbar({
pageSize:10, // 每頁顯示幾條數據
store: store,
displayInfo: true, // 必須爲ture,displayMsg才能顯示
displayMsg: "顯示第{0}條到第{1}條記錄,一共{2}條記錄",
emptyMsg: "記錄爲空" // 沒有記錄的提示信息
})
});
store.load({
params:{start: 0,limit: 10}// 從0開始,最多取10條
}); // 必須在構造表格後執行,否則分頁工具將不起作用
選擇模型:
grid.on("click",function(){
// 獲得選擇模型,通過選擇模型選擇當前選中的行。
var selections =grid.getSelectionModel().getSelections();
for(var i=0;i<selections.length; i++){
var record =selections[i];
Ext.Msg.alert("提示",record.data.name + "--" + record.get("age")+ "--" + record.get("id"));
}
});
表格視圖:Ext.grid.GridView:
Ext.data.Store可以看做model,Ext.grid.GridPanel可以看做controller,而Ext.grid.GridView可以看做view,通常情況下不用創建GridView的實例,GridPanel可以自動創建GridView的實例,可以通過gird.getView()獲取當前的實例。我們可以在創建GridPanel時,通過viewConfig參數,作爲初始化參數傳遞給GridView。
常用參數:
forceFit: true時,表格自動延伸每列長度,使內容填充表格。
ColumnText、sortAscText、sortDescText設置每列下拉菜單中得“顯示的列”、“升序”、“降序”這三個部分的顯示文字。