Extjs动态生成表头

蔚落 2022-09-22 01:29 368阅读 0赞

原文:Extjs动态生成表头

源代码下载地址

  1. var cm = [{
  2. header : "编号",
  3. dataIndex : "id",
  4. width : 65
  5. }, {
  6. header : "名称",
  7. dataIndex : "name",
  8. width : 65
  9. }, {
  10. header : "路径",
  11. dataIndex : "url",
  12. width : 65
  13. }]
  14. var colModel = new Ext.grid.ColumnModel({
  15. columns : cm
  16. });
  17. var fd = ["id", "name", "url"];
  18. var store = new Ext.data.JsonStore({
  19. fields : fd
  20. })
  21. var grid = new Ext.grid.GridPanel({
  22. cm : colModel,
  23. store : store,
  24. tbar : [{
  25. xtype : "combo",
  26. id : 'my_combo',
  27. triggerAction : "all",
  28. store : ["新增列","更换列"],
  29. mode : 'local',
  30. resizable : true,
  31. editable: false,
  32. lazyRender : true,
  33. width : 100
  34. },"-",{
  35. text : "生成",
  36. icon : "images/icons/add.png",
  37. cls : "x-btn-text-icon",
  38. handler : function() {
  39. var temp = Ext.getCmp('my_combo').getValue();
  40. if(temp == null || temp == "") return;
  41. var newfd="";
  42. var newcm="";
  43. if(temp == "新增列"){//在原有列的基础上追加新的列
  44. newfd = fd;
  45. newcm = cm;
  46. var res = {//要添加的列信息,可以动态获取
  47. fields : [{
  48. name : "sex"
  49. }],
  50. columns : [{
  51. header : '性别',
  52. dataIndex : "sex",
  53. width : 65
  54. }]
  55. };
  56. var fields = res.fields;
  57. var columns = res.columns;
  58. for (var i = 0; i < fields.length; i++) {//自己可以写控制不重复追加
  59. newfd.push(fields[i]);
  60. newcm.push(columns[i]);
  61. }
  62. }else if(temp == "更换列"){//更换表格中所有的列
  63. var res = {//要更换的列信息,可以动态获取
  64. fields : ["number", "age", "address"],
  65. columns : [{
  66. header : '号码',
  67. dataIndex : "number",
  68. width : 80
  69. },{
  70. header : '年龄',
  71. dataIndex : "age",
  72. width : 80
  73. },{
  74. header : '地址',
  75. dataIndex : "address",
  76. width : 80
  77. }]
  78. };
  79. newfd = res.fields;
  80. newcm = res.columns;
  81. }
  82. // 重新绑定store及column
  83. newStore = new Ext.data.JsonStore({
  84. fields : newfd
  85. });
  86. var newColumnModel = new Ext.grid.ColumnModel(newcm);
  87. grid.reconfigure(newStore , newColumnModel);//使用新的Store和ColumnModel并刷新
  88. //列变动之后,就可以做数据的加载了,加载的就是对应新的列的数据了。
  89. }
  90. }]
  91. })
  92. var myWin = new Ext.Window({
  93. title:"动态改变ColumnModel",
  94. width : '600',
  95. height : 500,
  96. frame : true,
  97. layout : 'fit',
  98. items : [grid]
  99. });
  100. myWin.show();

20140606105607931.jpg

由最代码官方编辑于2014-6-6 11:39:43

发表评论

表情:
评论列表 (有 0 条评论,368人围观)

还没有评论,来说两句吧...

相关阅读