Ext Js 表格(五)

表格由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設置每列下拉菜單中得“顯示的列”、“升序”、“降序”這三個部分的顯示文字。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章