`
dowhathowtodo
  • 浏览: 779172 次
文章分类
社区版块
存档分类
最新评论

ExtJS4学习笔记(十七)---锁定表头(Locking Grid)功能

 
阅读更多

Exjts4中,我们可以实现锁定表头(Locking Grid)能。实例实现了Grid锁定表头的功能,被锁定的列是固定不动的(如果有横向滚动条的话)。被锁定的列也无法被移除。为了方便,构造了一些本地数据作为测试数据。

JS代码:

  1. Ext.require([
  2. 'Ext.grid.*',
  3. 'Ext.data.*',
  4. 'Ext.util.*',
  5. 'Ext.state.*'
  6. ]);

  7. Ext.onReady(function(){
  8. Ext.QuickTips.init();

  9. //samplestaticdataforthestore
  10. varmyData=[
  11. ['3mCo',71.72,0.02,0.03,'9/112:00am'],
  12. ['AlcoaInc',29.01,0.42,1.47,'9/112:00am'],
  13. ['AltriaGroupInc',83.81,0.28,0.34,'9/112:00am'],
  14. ['AmericanExpressCompany',52.55,0.01,0.02,'9/112:00am'],
  15. ['AmericanInternationalGroup,Inc.',64.13,0.31,0.49,'9/112:00am'],
  16. ['AT&TInc.',31.61,-0.48,-1.54,'9/112:00am'],
  17. ['BoeingCo.',75.43,0.53,0.71,'9/112:00am'],
  18. ['CaterpillarInc.',67.27,0.92,1.39,'9/112:00am'],
  19. ['Citigroup,Inc.',49.37,0.02,0.04,'9/112:00am'],
  20. ['E.I.duPontdeNemoursandCompany',40.48,0.51,1.28,'9/112:00am'],
  21. ['ExxonMobilCorp',68.1,-0.43,-0.64,'9/112:00am'],
  22. ['GeneralElectricCompany',34.14,-0.08,-0.23,'9/112:00am'],
  23. ['GeneralMotorsCorporation',30.27,1.09,3.74,'9/112:00am'],
  24. ['Hewlett-PackardCo.',36.53,-0.03,-0.08,'9/112:00am'],
  25. ['HoneywellIntlInc',38.77,0.05,0.13,'9/112:00am'],
  26. ['IntelCorporation',19.88,0.31,1.58,'9/112:00am'],
  27. ['InternationalBusinessMachines',81.41,0.44,0.54,'9/112:00am'],
  28. ['Johnson&Johnson',64.72,0.06,0.09,'9/112:00am'],
  29. ['JPMorgan&Chase&Co',45.73,0.07,0.15,'9/112:00am'],
  30. ['McDonald\'sCorporation',36.76,0.86,2.40,'9/112:00am'],
  31. ['Merck&Co.,Inc.',40.96,0.41,1.01,'9/112:00am'],
  32. ['MicrosoftCorporation',25.84,0.14,0.54,'9/112:00am'],
  33. ['PfizerInc',27.96,0.4,1.45,'9/112:00am'],
  34. ['TheCoca-ColaCompany',45.07,0.26,0.58,'9/112:00am'],
  35. ['TheHomeDepot,Inc.',34.64,0.35,1.02,'9/112:00am'],
  36. ['TheProcter&GambleCompany',61.91,0.01,0.02,'9/112:00am'],
  37. ['UnitedTechnologiesCorporation',63.26,0.55,0.88,'9/112:00am'],
  38. ['VerizonCommunications',35.57,0.39,1.11,'9/112:00am'],
  39. ['Wal-MartStores,Inc.',45.45,0.73,1.63,'9/112:00am']
  40. ];

  41. /**
  42. *Customfunctionusedforcolumnrenderer
  43. *@param{Object}val
  44. */
  45. functionchange(val){
  46. if(val>0){
  47. return'<spanstyle="color:green;">'+val+'</span>';
  48. }elseif(val<0){
  49. return'<spanstyle="color:red;">'+val+'</span>';
  50. }
  51. returnval;
  52. }

  53. /**
  54. *Customfunctionusedforcolumnrenderer
  55. *@param{Object}val
  56. */
  57. functionpctChange(val){
  58. if(val>0){
  59. return'<spanstyle="color:green;">'+val+'%</span>';
  60. }elseif(val<0){
  61. return'<spanstyle="color:red;">'+val+'%</span>';
  62. }
  63. returnval;
  64. }

  65. //createthedatastore
  66. varstore=Ext.create('Ext.data.ArrayStore',{
  67. fields:[
  68. {name:'company'},
  69. {name:'price',type:'float'},
  70. {name:'change',type:'float'},
  71. {name:'pctChange',type:'float'},
  72. {name:'lastChange',type:'date',dateFormat:'n/jh:ia'}
  73. ],
  74. data:myData
  75. });

  76. //createtheGrid
  77. vargrid=Ext.create('Ext.grid.Panel',{
  78. store:store,
  79. columnLines:true,
  80. columns:[{
  81. text:'Company',
  82. locked:true,
  83. width:200,
  84. sortable:false,
  85. dataIndex:'company'
  86. },{
  87. text:'Price',
  88. width:125,
  89. sortable:true,
  90. renderer:'usMoney',
  91. dataIndex:'price'
  92. },{
  93. text:'Change',
  94. width:125,
  95. sortable:true,
  96. renderer:change,
  97. dataIndex:'change'
  98. },{
  99. text:'%Change',
  100. width:125,
  101. sortable:true,
  102. renderer:pctChange,
  103. dataIndex:'pctChange'
  104. },{
  105. text:'LastUpdated',
  106. width:135,
  107. sortable:true,
  108. renderer:Ext.util.Format.dateRenderer('m/d/Y'),
  109. dataIndex:'lastChange'
  110. }],
  111. height:350,
  112. width:600,
  113. title:'LockingGridColumn',
  114. renderTo:'grid-example',
  115. viewConfig:{
  116. stripeRows:true
  117. }
  118. });
  119. });

将此代码另存为:locking-grid.js。因为代码中将Grid渲染到了一个id为:grid-example的容器中,所以我们的HTML页面里,要写一个DIV来放置此Grid。

HTML代码:

  1. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
  5. <title>LockingGridColumnExample</title>
  6. <linkrel="stylesheet"type="text/css"href="../../resources/css/ext-all.css"/>
  7. <linkrel="stylesheet"type="text/css"href="../shared/example.css"/>
  8. <scripttype="text/javascript"src="../../bootstrap.js"></script>
  9. <scripttype="text/javascript"src="locking-grid.js"></script>
  10. </head>
  11. <body>
  12. <divid="grid-example"></div>
  13. </body>
  14. </html>

最后要注意的是,引人的CSS文件和JS文件一定要注意路径。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics