無廢話ExtJs 入門教程十七[列表:GridPanel]

來源:互聯網
上載者:User

標籤:

無廢話ExtJs 入門教程十七[列表:GridPanel]extjs技術交流,歡迎加群(201926085)

在Extjs中,GridPanel用於資料顯示,即我們平時說的列表頁。在本節中,我們先對GridPanel有個基本的認識,後繼過程再做Demo練習詳細講解在開發中的應用。

1.代碼如下:

  1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  2 <html xmlns="http://www.w3.org/1999/xhtml">  3 <head>  4     <title></title>  5     <!--ExtJs架構開始-->  6     <script type="text/javascript" src="/Ext/adapter/ext/ext-base.js"></script>  7     <script type="text/javascript" src="/Ext/ext-all.js"></script>  8     <script src="/Ext/src/locale/ext-lang-zh_CN.js" type="text/javascript"></script>  9     <link rel="stylesheet" type="text/css" href="/Ext/resources/css/ext-all.css" /> 10     <!--ExtJs架構結束--> 11     <script type="text/javascript"> 12         Ext.onReady(function () { 13             //資料來源 14             var jsonstore = new Ext.data.JsonStore({ 15                 data: [ 16                     { id: 1, name: ‘張三‘, sex: ‘0‘, birthday: ‘2001/01/01‘ }, 17                     { id: 2, name: ‘李四‘, sex: ‘1‘, birthday: ‘2002/01/01‘ }, 18                     { id: 3, name: ‘王五‘, sex: ‘0‘, birthday: ‘2003/01/01‘ } 19                 ], 20                 fields: [‘id‘, ‘name‘, ‘sex‘, { name: ‘birthday‘, type: ‘date‘, dateformat: ‘Y/m/d‘}] 21             }); 22             //複選框列 23             var sm = new Ext.grid.CheckboxSelectionModel(); 24             //渲染性別 25             var sexrender = function (value, metaData, record, rowIndex, cloIndex, store) { 26                 if (value == ‘0‘) { 27                     metaData.attr = ‘style="font-weight:bold";‘ 28                     return ‘男‘; 29                 } 30                 else 31                     return ‘女‘; 32             } 33             //定義列 34             var column = new Ext.grid.ColumnModel({ 35                 columns: [ 36                       sm, 37                      { header: ‘編號‘, dataIndex: ‘id‘, sortable: true }, 38                      { header: ‘姓名‘, dataIndex: ‘name‘ }, 39                      { header: ‘性別‘, dataIndex: ‘sex‘, renderer: sexrender }, 40                      { header: ‘出生日期‘, dataIndex: ‘birthday‘, renderer: Ext.util.Format.dateRenderer(‘Y-m-d‘) } 41                 ] 42             }); 43             //添加按鈕 44             var tbtn = new Ext.Toolbar.Button({ 45                 text: ‘查看選中項‘, 46                 listeners: { 47                     ‘click‘: function () { 48                         var row = grid.getSelectionModel().getSelections(); 49                         for (var i = 0; i < row.length; i++) { 50                             alert(row[i].get(‘id‘)); 51                         } 52                     } 53                 } 54             }); 55             //分頁控制項 56             var pager = new Ext.PagingToolbar({ 57                 pageSize: 2, 58                 store: jsonstore, 59                 listeners: { 60                     "beforechange": function (bbar, params) { 61                         var grid = bbar.ownerCt; 62                         var store = grid.getStore(); 63                         var start = params.start; 64                         var limit = params.limit; 65                         alert(store.getCount()); 66                         return false; 67                     } 68                 } 69             }); 70             //列表 71             var grid = new Ext.grid.GridPanel({ 72                 sm: sm, 73                 title: ‘GridPanel‘, 74                 height: 200, 75                 store: jsonstore, 76                 tbar: [tbtn], 77                 bbar: pager, 78                 colModel: column 79             }); 80             //表單 81             var form = new Ext.form.FormPanel({ 82                 frame: true, 83                 fileUpload: true, 84                 url: ‘/App_Ashx/Demo/Upload.ashx‘, 85                 title: ‘表單標題‘, 86                 style: ‘margin:10px‘, 87                 items: [grid] 88             }); 89             //表單 90             var win = new Ext.Window({ 91                 title: ‘視窗‘, 92                 width: 476, 93                 height: 374, 94                 resizable: true, 95                 modal: true, 96                 closable: true, 97                 maximizable: true, 98                 minimizable: true, 99                 buttonAlign: ‘center‘,100                 items: form101             });102             win.show();103         });104     </script>105 </head>106 <body>107     <!--108 說明:109 (1)var jsonstore = new Ext.data.JsonStore():建立一個新的資料來源。110     data: 資料項目,如資料庫中的儲存一樣111     id   name   sex  brithday112     1    張三   0    2001-01-01113     2    李四   1    2002-01-01114     3    王五   0    2003-01-01115     fields: 列的定義,指出資料來源應該有幾列,每列的名稱和資料類型等資訊,如上所示,說明存在4列,列名分別為:id,name,sex,brithday。116 (2) var sm = new Ext.grid.CheckboxSelectionModel():建立一個複選框的列。117     注意 sm 要在兩個地方使用,一、要告訴列模型,上例的36行。二、要告訴列表,上例的72行。缺一不可。118 (3)var column = new Ext.grid.ColumnModel():grid的列,這個是定義gird應該有幾列。119     如上所示:第一列為:sm[複選框],第二列為:{ header: ‘編號‘, dataIndex: ‘id‘, sortable: true },header:顯示在gird上面的標題,dataIndex:‘id‘對應資料來源的映射關係,意思就是說,表頭顯示叫"編號",而實際的資料對應的是資料來源的id這一列。120     { header: ‘性別‘, dataIndex: ‘sex‘, renderer: sexrender }:renderer渲染列,執行的方法為 sexrender121      var sexrender = function (value, metaData, record, rowIndex, cloIndex, store) {122                 if (value == ‘0‘){123                         metaData.attr = ‘style="font-weight:bold";‘124                         return ‘男‘;125                     }126                 else127                     return ‘女‘;128      }129      參數說明:130      value:目前的儲存格的值。131      meetaData:設定元素<div>男</div>的樣式表與屬性值,如上所示:我加了個加粗顯示的樣式。這個參數包含兩個屬性:metaData.css與metaData.attr132      record:當前Record對象引用。133      rowIndex:目前的儲存格行的索引。134      colIndex:目前的儲存格列的索引。135      store:store的引用。136      我們最常用的就是 value,平時寫的時候大多數只傳value,例如: var sexrender = function(value){處理方法}137 (4)var tbtn = new Ext.Toolbar.Button():建立一個工具列按鈕,tbar可以添加多個按鈕,處理不同的方法,如"添加","刪除","修改"等。138 (5)var row = grid.getSelectionModel().getSelections():擷取選中項的行,row[i].get(‘id‘)擷取行中的某一列。139 (6)var grid = new Ext.grid.GridPanel():聲明一個新的gird。140                 sm: sm,//選擇列141                 store: jsonstore,//資料來源142                 tbar: [tbtn],//頂部的按鈕143                 bbar: pager,//底部的分頁144                 colModel: column//列表頭與列145 (7)var pager = new Ext.PagingToolbar():建立一個新的分頁控制項146                 pageSize: 2,//頁碼大小為2147                 store: jsonstore,分頁的資料來源148                 listeners: {//由於沒有連結後台資料庫動態綁定資料庫,這裡在,點下一頁時‘beforechange’事件做了個 return false149                     "beforechange": function (bbar, params) {150                         var grid = bbar.ownerCt;151                         var store = grid.getStore();152                         var start = params.start;//起始資料的索引號153                         var limit = params.limit;//每頁的大小154                         console.log("==下面是列印資訊")155                         console.log(store.getCount());156                         console.log(start);157                         console.log(limit);158                         console.log("==列印結束。")159                         return false;160                     }161                 }162             });163 -->164 </body>165 </html>

2.效果如下:

轉載請註明出處:http://www.cnblogs.com/iamlilinfeng

無廢話ExtJs 入門教程十七[列表:GridPanel]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.