EXT表格

由于这个比较大所以单独一文,

建议先看EXT基础

http://blog.csdn.net/21aspnet/article/details/6782028

最基本的表格

[html]  view plain copy
  1. <html>  
  2.     <head>  
  3.         <title>开始EXT</title>  
  4.                 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">  
  5.         <link rel="stylesheet" type="text/css"  
  6.             href="extjs/resources/css/ext-all.css" />  
  7.         <script src="extjs/adapter/ext/ext-base.js"></script>  
  8.         <script src="extjs/ext-all-debug.js"></script>  
  9.                 <script src="extjs/build/locale/ext-lang-zh_CN.js"></script>  
  10.                 <script type="text/javascript">  
  11.                     Ext.onReady(function(){  
  12.                var cm = new Ext.grid.ColumnModel([  
  13.     {header:'编号',dataIndex:'id'},  
  14.     {header:'性别',dataIndex:'sex'},  
  15.     {header:'名称',dataIndex:'name'},  
  16.     {header:'描述',dataIndex:'descn'}  
  17. ]);  
  18. cm.defaultSortable = true;  
  19. var data = [  
  20.         ['1','男','甲','descn1'],  
  21.         ['2','女','乙','descn2'],  
  22.         ['3','女','丙','descn3'],  
  23.         ['4','男','丁','descn4'],  
  24.         ['5','女','戊','descn5']  
  25.     ];  
  26.   
  27.     var ds1 = new Ext.data.Store({  
  28.         proxy: new Ext.data.MemoryProxy(data),  
  29.         reader: new Ext.data.ArrayReader({}, [  
  30.             {name: 'id'},  
  31.             {name: 'sex'},  
  32.             {name: 'name'},  
  33.             {name: 'descn'}  
  34.         ])  
  35.     });  
  36.     ds1.load();  
  37.   
  38.     var grid1 = new Ext.grid.GridPanel({  
  39.         el: 'grid1',  
  40.         ds: ds1,  
  41.         cm: cm,  
  42.        height:140,  
  43.        width:420  
  44.   
  45.     });  
  46.     grid1.render();  
  47. });  
  48.   
  49.   
  50.                 </script>  
  51.   
  52.   
  53. </head>  
  54. <body><div id="hello"></div>  
  55.   
  56. <h1>表格示例</h1>  
  57. <div id="grid1"></div><br/>  
  58. <div id="grid2"></div><br/>  
  59. <div id="example-grid"></div>  
  60.   
  61.   
  62. </body>  
  63. </html>  


 

 

 

带单选框

[html]  view plain copy
  1. <html>  
  2.     <head>  
  3.         <title>开始EXT</title>  
  4.                 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">  
  5.         <link rel="stylesheet" type="text/css"  
  6.             href="extjs/resources/css/ext-all.css" />  
  7.         <script src="extjs/adapter/ext/ext-base.js"></script>  
  8.         <script src="extjs/ext-all-debug.js"></script>  
  9.                 <script src="extjs/build/locale/ext-lang-zh_CN.js"></script>  
  10.                 <script type="text/javascript">  
  11.                     Ext.onReady(function(){  
  12.               var sm = new Ext.grid.CheckboxSelectionModel();  
  13.               var cm = new Ext.grid.ColumnModel([  
  14.                   new Ext.grid.RowNumberer(),  
  15.                   sm,  
  16.     {header:'编号',dataIndex:'id'},  
  17.     {header:'性别',dataIndex:'sex'},  
  18.     {header:'名称',dataIndex:'name'},  
  19.     {header:'描述',dataIndex:'descn'}  
  20. ]);  
  21. cm.defaultSortable = false;  
  22. var data = [  
  23.         ['1','男','甲','descn1'],  
  24.         ['2','女','乙','descn2'],  
  25.         ['3','女','丙','descn3'],  
  26.         ['4','男','丁','descn4'],  
  27.         ['5','女','戊','descn5']  
  28.     ];  
  29.   
  30.     var ds1 = new Ext.data.Store({  
  31.         proxy: new Ext.data.MemoryProxy(data),  
  32.         reader: new Ext.data.ArrayReader({}, [  
  33.             {name: 'id'},  
  34.             {name: 'sex'},  
  35.             {name: 'name'},  
  36.             {name: 'descn'}  
  37.         ])  
  38.     });  
  39.     ds1.load();  
  40.   
  41.     var grid1 = new Ext.grid.GridPanel({  
  42.         el: 'grid1',  
  43.         ds: ds1,  
  44.         cm: cm,  
  45.         sm: sm,  
  46.        height:160,  
  47.        width:450  
  48.   
  49.     });  
  50.     grid1.render();  
  51. });  
  52.   
  53.   
  54.                 </script>  
  55.   
  56.   
  57. </head>  
  58. <body><div id="hello"></div>  
  59.   
  60. <h1>表格示例</h1>  
  61. <div id="grid1"></div><br/>  
  62. <div id="grid2"></div><br/>  
  63. <div id="example-grid"></div>  
  64.   
  65.   
  66. </body>  
  67. </html>  


加表头:

var grid1 = new Ext.grid.GridPanel({ el: 'grid1', ds: ds1, cm: cm, sm: sm, title:'员工信息表', height:160, width:450 }); 

单击事件:

[html]  view plain copy
  1. <html>  
  2.     <head>  
  3.         <title>开始EXT</title>  
  4.                 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">  
  5.         <link rel="stylesheet" type="text/css"  
  6.             href="extjs/resources/css/ext-all.css" />  
  7.         <script src="extjs/adapter/ext/ext-base.js"></script>  
  8.         <script src="extjs/ext-all-debug.js"></script>  
  9.                 <script src="extjs/build/locale/ext-lang-zh_CN.js"></script>  
  10.                 <script type="text/javascript">  
  11.                     Ext.onReady(function(){  
  12.               var sm = new Ext.grid.CheckboxSelectionModel();  
  13.               var cm = new Ext.grid.ColumnModel([  
  14.                   new Ext.grid.RowNumberer(),  
  15.                   sm,  
  16.     {header:'编号',dataIndex:'id'},  
  17.     {header:'性别',dataIndex:'sex'},  
  18.     {header:'名称',dataIndex:'name'},  
  19.     {header:'描述',dataIndex:'descn'}  
  20. ]);  
  21. cm.defaultSortable = false;  
  22. var data = [  
  23.         ['1','男','甲','descn1'],  
  24.         ['2','女','乙','descn2'],  
  25.         ['3','女','丙','descn3'],  
  26.         ['4','男','丁','descn4'],  
  27.         ['5','女','戊','descn5']  
  28.     ];  
  29.   
  30.     var ds1 = new Ext.data.Store({  
  31.         proxy: new Ext.data.MemoryProxy(data),  
  32.         reader: new Ext.data.ArrayReader({}, [  
  33.             {name: 'id'},  
  34.             {name: 'sex'},  
  35.             {name: 'name'},  
  36.             {name: 'descn'}  
  37.         ])  
  38.     });  
  39.     ds1.load();  
  40.   
  41.     var grid1 = new Ext.grid.GridPanel({  
  42.         el: 'grid1',  
  43.         ds: ds1,  
  44.         cm: cm,  
  45.         sm: sm,  
  46.         title:'员工信息表',  
  47.        height:160,  
  48.        width:450  
  49.   
  50.     });  
  51.     grid1.render();  
  52.     <span style="BACKGROUND-COLOR: #ffff33">grid1.addListener('cellclick', cellclick);</span>  
  53. });  
  54.   
  55. function cellclick(grid, rowIndex, columnIndex, e) {  
  56.     var record = grid.getStore().getAt(rowIndex);   //Get the Record  
  57.     var fieldName = grid.getColumnModel().getDataIndex(columnIndex);  //Get field name  
  58.     var data = record.get(fieldName);  
  59.     Ext.MessageBox.alert('提示','当前选中的数据是:'+data);  
  60. }  
  61. </script>  
  62.   
  63.   
  64. </head>  
  65. <body><div id="hello"></div>  
  66.   
  67. <h1>表格示例</h1>  
  68. <div id="grid1"></div><br/>  
  69. <div id="grid2"></div><br/>  
  70. <div id="example-grid"></div>  
  71.   
  72.   
  73. </body>  
  74. </html>  


 

添加右键菜单:

[html]  view plain copy
  1. <html>  
  2.     <head>  
  3.         <title>开始EXT</title>  
  4.                 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">  
  5.         <link rel="stylesheet" type="text/css"  
  6.             href="extjs/resources/css/ext-all.css" />  
  7.         <script src="extjs/adapter/ext/ext-base.js"></script>  
  8.         <script src="extjs/ext-all-debug.js"></script>  
  9.                 <script src="extjs/build/locale/ext-lang-zh_CN.js"></script>  
  10.                 <script type="text/javascript">  
  11.                     Ext.onReady(function(){  
  12.               var sm = new Ext.grid.CheckboxSelectionModel();  
  13.               var cm = new Ext.grid.ColumnModel([  
  14.                   new Ext.grid.RowNumberer(),  
  15.                   sm,  
  16.     {header:'编号',dataIndex:'id'},  
  17.     {header:'性别',dataIndex:'sex'},  
  18.     {header:'名称',dataIndex:'name'},  
  19.     {header:'描述',dataIndex:'descn'}  
  20. ]);  
  21. cm.defaultSortable = false;  
  22. var data = [  
  23.         ['1','男','甲','descn1'],  
  24.         ['2','女','乙','descn2'],  
  25.         ['3','女','丙','descn3'],  
  26.         ['4','男','丁','descn4'],  
  27.         ['5','女','戊','descn5']  
  28.     ];  
  29.   
  30.     var ds1 = new Ext.data.Store({  
  31.         proxy: new Ext.data.MemoryProxy(data),  
  32.         reader: new Ext.data.ArrayReader({}, [  
  33.             {name: 'id'},  
  34.             {name: 'sex'},  
  35.             {name: 'name'},  
  36.             {name: 'descn'}  
  37.         ])  
  38.     });  
  39.     ds1.load();  
  40.   
  41.     var grid1 = new Ext.grid.GridPanel({  
  42.         el: 'grid1',  
  43.         ds: ds1,  
  44.         cm: cm,  
  45.         sm: sm,  
  46.         title:'员工信息表',  
  47.        height:160,  
  48.        width:450  
  49.   
  50.     });  
  51.     grid1.render();  
  52.     grid1.addListener('rowcontextmenu', rightClickFn);//右键菜单代码关键部分  
  53.     var rightClick = new Ext.menu.Menu({  
  54.     id:'rightClickCont',  //在HTML文件中必须有个rightClickCont的DIV元素  
  55.     items: [  
  56.         {  
  57.             id: 'rMenu1',  
  58.             handler: rMenu1Fn,//点击后触发的事件  
  59.             text: '右键菜单1'  
  60.         },  
  61.         {  
  62.             //id: 'rMenu2',  
  63.             //handler: rMenu2Fn,  
  64.             text: '右键菜单2'  
  65.         }  
  66.     ]  
  67. });  
  68. function rightClickFn(grid,rowindex,e){  
  69.     e.preventDefault();  
  70.     rightClick.showAt(e.getXY());  
  71. }  
  72. function rMenu1Fn(){  
  73.    Ext.MessageBox.alert('right','rightClick');  
  74. }  
  75. });  
  76.   
  77.   
  78.   
  79. </script>  
  80.   
  81.   
  82. </head>  
  83. <body><div id="rightClickCont"></div>  
  84.   
  85. <h1>表格示例</h1>  
  86. <div id="grid1"></div><br/>  
  87. <div id="grid2"></div><br/>  
  88. <div id="example-grid"></div>  
  89.   
  90.   
  91. </body>  
  92. </html>  

 

改变数据颜色:

[html]  view plain copy
  1. <html>  
  2.     <head>  
  3.         <title>开始EXT</title>  
  4.                 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">  
  5.         <link rel="stylesheet" type="text/css"  
  6.             href="extjs/resources/css/ext-all.css" />  
  7.         <script src="extjs/adapter/ext/ext-base.js"></script>  
  8.         <script src="extjs/ext-all-debug.js"></script>  
  9.                 <script src="extjs/build/locale/ext-lang-zh_CN.js"></script>  
  10.                 <script type="text/javascript">  
  11.                     Ext.onReady(function(){  
  12.               var sm = new Ext.grid.CheckboxSelectionModel();  
  13.               var cm = new Ext.grid.ColumnModel([  
  14.                   new Ext.grid.RowNumberer(),  
  15.                   sm,  
  16.     {header:'编号',dataIndex:'id'},  
  17.     {header:'性别',dataIndex:'sex',renderer:changeSex},  
  18.     {header:'名称',dataIndex:'name'},  
  19.     {header:'描述',dataIndex:'descn'}  
  20. ]);  
  21. cm.defaultSortable = false;  
  22. var data = [  
  23.         ['1','男','甲','descn1'],  
  24.         ['2','女','乙','descn2'],  
  25.         ['3','女','丙','descn3'],  
  26.         ['4','男','丁','descn4'],  
  27.         ['5','女','戊','descn5']  
  28.     ];  
  29.   
  30.     var ds1 = new Ext.data.Store({  
  31.         proxy: new Ext.data.MemoryProxy(data),  
  32.         reader: new Ext.data.ArrayReader({}, [  
  33.             {name: 'id'},  
  34.             {name: 'sex'},  
  35.             {name: 'name'},  
  36.             {name: 'descn'}  
  37.         ])  
  38.     });  
  39.     ds1.load();  
  40.   
  41.     var grid1 = new Ext.grid.GridPanel({  
  42.         el: 'grid1',  
  43.         ds: ds1,  
  44.         cm: cm,  
  45.         sm: sm,  
  46.        height:160,  
  47.        width:450  
  48.   
  49.     });  
  50.     grid1.render();  
  51. });  
  52. function changeSex(value){  
  53.     if (value == '男') {  
  54.         return "<span style='color:red;font-weight:bold;'></span>";  
  55.     } else {  
  56.         return "<span style='color:green;font-weight:bold;'></span>";  
  57.     }  
  58. }  
  59.   
  60.   
  61.                 </script>  
  62.   
  63.   
  64. </head>  
  65. <body><div id="hello"></div>  
  66.   
  67. <h1>表格示例</h1>  
  68. <div id="grid1"></div><br/>  
  69. <div id="grid2"></div><br/>  
  70. <div id="example-grid"></div>  
  71.   
  72.   
  73. </body>  
  74. </html>  


 

分页控件:

 

[html]  view plain copy
  1. <html>  
  2.     <head>  
  3.         <title>开始EXT</title>  
  4.                 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">  
  5.         <link rel="stylesheet" type="text/css"  
  6.             href="extjs/resources/css/ext-all.css" />  
  7.         <script src="extjs/adapter/ext/ext-base.js"></script>  
  8.         <script src="extjs/ext-all-debug.js"></script>  
  9.                 <script src="extjs/build/locale/ext-lang-zh_CN.js"></script>  
  10.                 <script type="text/javascript">  
  11.                     Ext.BLANK_IMAGE_URL="resources/images/default/s.gif"  
  12.   
  13.                   Ext.onReady(function(){  
  14.     var sm = new Ext.grid.CheckboxSelectionModel();  
  15.   
  16.     var cm = new Ext.grid.ColumnModel([  
  17.         new Ext.grid.RowNumberer(),  
  18.         sm,  
  19.         {header:'编号',dataIndex:'id'},  
  20.         {header:'性别',dataIndex:'sex'},  
  21.         {header:'名称',dataIndex:'name'},  
  22.         {header:'描述',dataIndex:'descn'}  
  23.     ]);  
  24.     cm.defaultSortable = true;  
  25.     var ds = new Ext.data.Store({  
  26.         proxy: new Ext.data.HttpProxy({url:'data.php'}),  
  27.         reader: new Ext.data.JsonReader({  
  28.             totalProperty: 'totalProperty',  
  29.             root: 'root'  
  30.         }, [  
  31.             {name: 'id'},  
  32.             {name: 'name'},  
  33.             {name: 'descn'}  
  34.         ])  
  35.     });  
  36.     ds.load({params:{start:0,limit:10}});  
  37.   
  38.     var grid = new Ext.grid.GridPanel({  
  39.         el: 'grid3',  
  40.         ds: ds,  
  41.         cm: cm,  
  42.         sm: sm,  
  43.         height:320,  
  44.        width:500,  
  45.   
  46.         title: '分页演示',  
  47.         bbar: new Ext.PagingToolbar({  
  48.             pageSize: 10,  
  49.             store: ds,  
  50.             displayInfo: true,  
  51.             displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',  
  52.             emptyMsg: "没有记录"  
  53.         }),  
  54.         tbar: new Ext.PagingToolbar({  
  55.             pageSize: 10,  
  56.             store: ds,  
  57.             displayInfo: true,  
  58.             displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',  
  59.             emptyMsg: "没有记录"  
  60.         })  
  61.     });  
  62.     grid.render();  
  63. })  
  64.   
  65.   
  66.   
  67.                 </script>  
  68.   
  69.   
  70. </head>  
  71. <body><div id="hello"></div>  
  72.   
  73. <h1>表格示例</h1>  
  74. <div id="grid1"></div><br/>  
  75. <div id="grid2"></div><br/>  
  76. <div id="grid3"></div><br/>  
  77. <div id="example-grid"></div>  
  78.   
  79.   
  80. </body>  
  81. </html>  

data.php   这里就不从数据库取数据了,直接模拟

[php]  view plain copy
  1. {totalProperty:100,root:[{'id':'0','name':'name0','descn':'descn0'},  
  2. {'id':'1','name':'name1','descn':'descn1'},{'id':'2','name':'name2','descn':'descn2'},  
  3. {'id':'3','name':'name3','descn':'descn3'},{'id':'4','name':'name4','descn':'descn4'},  
  4. {'id':'5','name':'name5','descn':'descn5'},{'id':'6','name':'name6','descn':'descn6'},  
  5. {'id':'7','name':'name7','descn':'descn7'},{'id':'8','name':'name8','descn':'descn8'},  
  6. {'id':'9','name':'name9','descn':'descn9'}]}  



 

表格被panel 控件HOLD住

[html]  view plain copy
  1. <html>  
  2.     <head>  
  3.         <title>开始EXT</title>  
  4.                 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">  
  5.         <link rel="stylesheet" type="text/css"  
  6.             href="extjs/resources/css/ext-all.css" />  
  7.         <script src="extjs/adapter/ext/ext-base.js"></script>  
  8.         <script src="extjs/ext-all-debug.js"></script>  
  9.                 <script src="extjs/build/locale/ext-lang-zh_CN.js"></script>  
  10.                 <script type="text/javascript">  
  11.                     Ext.BLANK_IMAGE_URL="resources/images/default/s.gif"  
  12.   
  13.                   Ext.onReady(function(){  
  14.     var sm = new Ext.grid.CheckboxSelectionModel();  
  15.   
  16.     var cm = new Ext.grid.ColumnModel([  
  17.         new Ext.grid.RowNumberer(),  
  18.         sm,  
  19.         {header:'编号',dataIndex:'id'},  
  20.         {header:'性别',dataIndex:'sex'},  
  21.         {header:'名称',dataIndex:'name'},  
  22.         {header:'描述',dataIndex:'descn'}  
  23.     ]);  
  24.     cm.defaultSortable = true;  
  25.     var ds = new Ext.data.Store({  
  26.         proxy: new Ext.data.HttpProxy({url:'data.php'}),  
  27.         reader: new Ext.data.JsonReader({  
  28.             totalProperty: 'totalProperty',  
  29.             root: 'root'  
  30.         }, [  
  31.             {name: 'id'},  
  32.             {name: 'name'},  
  33.             {name: 'descn'}  
  34.         ])  
  35.     });  
  36.     ds.load({params:{start:0,limit:10}});  
  37.   
  38.     var grid = new Ext.grid.GridPanel({  
  39.         el: 'grid3',  
  40.         ds: ds,  
  41.         cm: cm,  
  42.         sm: sm,  
  43.         height:320,  
  44.        width:500,  
  45.   
  46.         title: '分页演示',  
  47.         bbar: new Ext.PagingToolbar({  
  48.             pageSize: 10,  
  49.             store: ds,  
  50.             displayInfo: true,  
  51.             displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',  
  52.             emptyMsg: "没有记录"  
  53.         }),  
  54.         tbar: new Ext.PagingToolbar({  
  55.             pageSize: 10,  
  56.             store: ds,  
  57.             displayInfo: true,  
  58.             displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',  
  59.             emptyMsg: "没有记录"  
  60.         })  
  61.     });  
  62.     grid.render();  
  63.   
  64.     var panel = new Ext.Panel({  
  65.     renderTo: 'panel',  
  66.     title:'panel',  
  67.     collapsible:true,  
  68.     width:500,  
  69.     height:400,  
  70.     items:[grid] //管理grid  
  71. });  
  72.   
  73. })  
  74.   
  75.   
  76.   
  77.                 </script>  
  78.   
  79.   
  80. </head>  
  81. <body><div id="panel"></div>  
  82.   
  83.   
  84. <div id="grid1"></div><br/>  
  85. <div id="grid2"></div><br/>  
  86. <div id="grid3"></div><br/>  
  87. <div id="example-grid"></div>  
  88.   
  89.   
  90. </body>  
  91. </html>  


===========================================================================

 

扩充阅读:

如何用三种基本类型的数据(Array, Json, Xml)来创建最简单的表格
最简单的表格由以下几个元素组成:
1. 列定义(ColumnModel)
    首先我们知道表格肯定是二维的,横着叫行,竖着叫列。跟设计数据库,新建表一样,我们要先设置这个表有几列,每列叫啥名字,啥类型,咋显示,这个表格的骨架也就出来了。这里我们建立一个四列的表格,第一列叫编号(id),第二列叫性别(sex),第三列叫名称(name),第四列叫描述(descn)。

    // 定义一个ColumnModel
    var cm = new  Ext.grid.ColumnModel([
        {header:'编号',dataIndex:'id'
},
        {header:'性别',dataIndex:'sex'
},
        {header:'名称',dataIndex:'name'
},
        {header:'描述',dataIndex:'descn'
}
    ]);
    cm.defaultSortable = true
;

 

其中,cm.defaultSortable = true;这句话表示默认为可排序的表格,可以先不要去管它

2. 数据(Data)
    有了表格的骨架,现在我们要向里边添加数据了。这个数据当然也是二维了,下面分别介绍三种数据类型的使用方法:
(1) Array Data

 

    // ArrayData
    var data =  [
        ['1','male','name1','descn1'
],
        ['2','male','name1','descn2'
],
        ['3','male','name3','descn3'
],
        ['4','male','name4','descn4'
],
        ['5','male','name5','descn5'
]
    ];

 

(2) Json Data

 

    //JsonData
    var people =  { 
        'coders'
: [
            { 'id': '1', 'sex': 'male', 'name':'McLaughlin', 'descn': 'brett@newInstance.com'
 },
            { 'id': '2', 'sex': 'male','name':'Hunter', 'descn': 'jason@servlets.com'
 },
            { 'id': '3', 'sex': 'female','name':'Harold', 'descn': 'elharo@macfaq.com'
 }
        ],
        'musicians'
: [
            { 'id': '1', 'name': 'Clapton', 'descn': 'guitar'
 },
            { 'id': '2', 'name': 'Rachmaninoff', 'descn': 'piano'
 }
        ]
       }

 

(3) Xml Data
    Xml类型的数据一般是由一个.xml文件提供的,通过http请求的方式得到。

3. 数据的读取
    定义好数据之后,我们需要将其转换为能够为grid所用的页面,ext为咱们提供了一个桥梁,Ext.data.Store,通过它我们可以把任何格式的数据转化成grid可以使用的形式,这样就不需要为每种数据格式写一个grid的实现了。现在咱们就来看看这个Ext.data.Store是如何转换三种数据的。
(1) ArrayReader

 

    // ArrayReader
    var ds1 = new  Ext.data.Store({
        proxy: new
 Ext.data.MemoryProxy(data),
        reader: new
 Ext.data.ArrayReader({}, [
            {name: 'id'
},
            {name: 'sex'
},
            {name: 'name'
},
            {name: 'descn'
}
        ])
    });
    ds1.load();

 

    ds要对应两个部分:proxy和reader。proxy告诉我们从哪里获得数据,reader告诉我们如何解析这个数据。
    现在我们用的是Ext.data.MemoryProxy,它是专门用来解析js变量的。你可以看到,我们直接把data作为参数传递进去了。 Ext.data.ArrayReader专门用来解析数组,并且告诉我们它会按照定义的规范进行解析,每行读取三个数据,第一个叫id,第二个叫 sex,第三个叫name,第四个descn。这些是跟cm定义中的dataIndex对应的。这样cm就知道哪列应该显示那条数据了。
记得要执行一次ds.load(),对数据进行初始化。


(2) JsonReader

 

    // JsonReader
    var ds2 = new  Ext.data.Store({
        proxy: new
 Ext.data.MemoryProxy(people),
        reader: new Ext.data.JsonReader({root: 'coders'
}, [
            {name: 'id'
},
            {name: 'sex'
},
            {name: 'name'
},
            {name: 'descn'
}
        ])
    });
    ds2.load();

 

其中,root: 'colders'表示取数据的时候取的是'coders'这个节点的数据,而不是'musician'

(3) XmlReader

 

    // XmlReader
    var ds3 = new  Ext.data.Store({
        url: 'test.xml'
,
        reader: new Ext.data.XmlReader({record: 'item'
}, [
            {name: 'id'
},
            {name: 'sex'
},
            {name: 'name'
},
            {name: 'descn'
}
        ])
    });
    ds3.load();

 

其中,record: 'item'表示每条记录对应的节点是'item',下面我会给出test.xml文件的内容,便于更好的理解

test.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
      <results>2</results>
      <item>
            <id>1</id>
            <sex>male</sex>
            <name>Taylor</name>
            <descn>Coder</descn>
      </item>
      <item>
            <id>2</id>
            <sex>female</sex>
            <name>Sophia</name>
            <descn>Civil Servant</descn>
     </item>
     <item>
            <id>3</id>
            <sex>male</sex>
            <name>Taylor</name>
            <descn>Coder</descn>
      </item>
      <item>
            <id>4</id>
            <sex>female</sex>
            <name>Sophia</name>
            <descn>Civil Servant</descn>
     </item>
     <item>
            <id>5</id>
            <sex>female</sex>
            <name>Sophia</name>
            <descn>Civil Servant</descn>
     </item>
</dataset>

 

4. 下面组装数据,也分三个表格来显示

 

    // 对应Array
    var grid1 = new  Ext.grid.GridPanel({
        el: 'grid1'
,
        ds: ds1,
        cm: cm
    });
    grid1.render();
    
    // 对应Json

    var grid2 = new  Ext.grid.GridPanel({
        el: 'grid2'
,
        ds: ds2,
        cm: cm
    });
    grid2.render();
    
    // 对应Xml

    var grid3 = new  Ext.grid.GridPanel({
        renderTo: 'example-grid'
,
        ds: ds3,
        cm: cm,
        title: 'HelloWorld'
,
        autoHeight: 'true'

    })

 

其中,grid1和grid2中都有个el属性以及render()方法,这个意思是,当执行该方法的时候,会自动去找页面中id=xxx的标签,然后在里面插入表格;效果跟grid3中的方式是一样的。

获取单选框选择值

[html]  view plain copy
  1. buttons:[{  
  2.             text:'开始查询',  
  3.              handler: function(){  
  4.             var selectedRows = grid.getSelections();  
  5.             if(selectedRows.length<1){  
  6.                   
  7.                                 alert("请选择事件");  
  8.                                 return;  
  9.             }  
  10.             var eventIds = '';  
  11.             for(i=0;i<selectedRows.length;i++){  
  12.                 eventIds+= selectedRows[i].data.name+',';  
  13.             }  
  14.             alert(eventIds)  
  15.   
  16.                        }  
  17.         }]  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值