最近開始接觸ExtJs,貼出自己的代碼,一個簡單的表格顯示
版本 3.4.1
需要json包
代碼清單1、jsp引入的ExtJs文件
<!-- 資源文件 ExtJs 3.4.1 --> <link href="ExtJs/resources/css/ext-all.css" type="text/css" rel="stylesheet"/> <script type="text/javascript" src="ExtJs/ext-all-debug-w-comments.js"></script> <script type="text/javascript" src="ExtJs/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ExtJs/ext-all.js"></script> <script type="text/javascript" src="ExtJs/ext-lang-zh_CN.js"></script> <!-- 表格js文件 --> <script type="text/javascript" src="ExtIs/viewTable.js"></script>
代碼清單2 、viewTable.js文件
1 /** 2 * 數據表格顯示 3 */ 4 Ext.onReady(function (){ 5 //多選框 6 var sm = new Ext.grid.CheckboxSelectionModel({ 7 listeners:{ 8 'selectionchange':function(obj){ 9 var select = grid.getSelectionModel().getSelections(); 10 } 11 } 12 }); 13 //定義讀取數據格式 14 var dataReader = new Ext.data.JsonReader({ 15 totalProperty:'count', 16 root: 'data' 17 },[ 18 { name: 'strimgname' }, 19 { name: 'strostype' }, 20 { name: 'icpunum' }, 21 { name: 'imemorycapacity' }, 22 { name: 'idiskcapacity' } 23 ]); 24 //數據源 25 var store = new Ext.data.Store({ 26 proxy: new Ext.data.HttpProxy({ 27 url: 'testServlet', 28 method: 'GET' 29 }), 30 reader: dataReader, 31 sortInfo: {field: 'strostype', direction: 'DESC'}, 32 autoLoad:false 33 }); 34 store.load({params:{start:0,limit:8}});//加載數據時發送分頁參數 35 //顯示欄 36 var dataColumns = new Ext.grid.ColumnModel({ 37 38 columns: [ 39 new Ext.grid.RowNumberer(),//行號 40 sm, 41 { header: "虛擬機名稱",draggable:true, dataIndex: 'strimgname',sortable: true,resizable:false, 42 renderer:function(value, cellmeta, record,rowIndex){ 43 return '<a href="javascript:void(0);" title="'+value+'" onclick=alert("'+record.data.strimgname+':girdID='+grid.getId()+',行下標='+rowIndex+'")>'+value+'</a>'; 44 }}, 45 { header: "類型", dataIndex: 'strostype',resizable:false,sortable: true }, 46 { header: "CUP數量", dataIndex: 'icpunum',sortable: true}, 47 { header: "內存", dataIndex: 'imemorycapacity',sortable: true }, 48 { header: "硬盤", dataIndex: 'idiskcapacity',sortable: true } 49 ], 50 defaults: { 51 align: 'center' 52 53 } 54 }); 55 //組裝表格 56 var grid = new Ext.grid.GridPanel({ 57 store: store, 58 cm: dataColumns, 59 renderTo: Ext.getBody(), 60 autoExpandColumn: 1, 61 stripeRows: true, 62 autoHeight: true, 63 buttonAlign:'center', 64 // border: false, 65 sm:sm, 66 disableSelection: true, 67 frame: true, 68 loadMask:true,// '正在加載數據,請稍侯……提示 69 //stripeRows: true, //斑馬線效果 70 width: 950, 71 72 title:'表格', 73 viewConfig: { forceFit: true }//使列自動均分 74 ,buttons: [{ 75 text: "重新加載" 76 ,handler:function(){ 77 store.load({params:{start:0,limit:8}}); 78 alert(store.getAt()) 79 } 80 }], 81 tbar:new Ext.Toolbar({//頂部工具欄 82 items:[ 83 new Ext.form.Label({ text:'名稱: ' }), 84 id,{ 85 text: '查詢' 86 } 87 ] 88 89 }), 90 bbar:['->',//底部工具欄 91 new Ext.PagingToolbar({//分頁組件 92 pageSize:8, 93 store:store, 94 displayInfo:true, 95 emptyMsg:'沒有數據顯示' 96 })] 97 }); 98 })
代碼清單3、數據源接收的數據格式(servlet里響應的格式)
1 String str = req.getParameter("limit"); 2 String str1 = req.getParameter("start"); 3 Test t = new Test(); 4 List<Map<String,String >> list = t.getData(str,str1); 5 JSONObject obj = new JSONObject(); 6 JSONArray js = new JSONArray(); 7 obj.put("data", js.fromObject(list)); 8 obj.put("count", 10); //統計數量,這里寫死10條 9 resp.getWriter().write(obj.toString());//json格式化后輸出
最后貼出效果圖:
只有一個感覺,界面視圖組件化,也是ExtJs的最大特點,豐富的UI