`
gxh04007101
  • 浏览: 15616 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Ext grid 超级强大的动态添加字段、列扩展【转】

 
阅读更多
    Ext.override(Ext.data.Store,{ 
   addField: function(field){ 
   if(typeof field == 'string'){ 
   field = {name: field}; 
   } 
   this.recordType.prototype.fields.replace(field); 
   if(typeof field.defaultValue != 'undefined'){ 
   this.each(function(r){ 
   if(typeof r.data[field.name] == 'undefined'){ 
   r.data[field.name] = field.defaultValue; 
   } 
   }); 
   } 
   }, 
   removeField: function(name){ 
   this.recordType.prototype.fields.removeKey(name); 
   this.each(function(r){ 
   delete r.data[name]; 
   }); 
   } 
  }); 
  Ext.override(Ext.grid.ColumnModel,{ 
   addColumn: function(column, colIndex){ 
   if(typeof column == 'string'){ 
   column = {header: column, dataIndex: column}; 
   } 
   var config = this.config; 
   this.config = []; 
   if(typeof colIndex == 'number'){ 
   config.splice(colIndex, 0, column); 
   }else{ 
   colIndex = config.push(column); 
   } 
   this.setConfig(config); 
   return colIndex; 
   }, 
   removeColumn: function(colIndex){ 
   var config = this.config; 
   this.config = [config[colIndex]]; 
   config.remove(colIndex); 
   this.setConfig(config); 
   } 
  }); 
  Ext.override(Ext.grid.GridPanel,{ 
   addColumn: function(field, column, colIndex){ 
   if(!column){ 
   if(field.dataIndex){ 
   column = field; 
   field = field.dataIndex; 
   } else{ 
   column = field.name || field; 
   } 
   } 
   this.store.addField(field); 
   this.colModel.addColumn(column, colIndex); 
   }, 
   removeColumn: function(name, colIndex){ 
   this.store.removeField(name); 
   if(typeof colIndex != 'number'){ 
   colIndex = this.colModel.findColumnIndex(name); 
   } 
   if(colIndex >= 0){ 
   this.colModel.removeColumn(colIndex); 
   } 
   } 
  }); 
  
  Ext.override(Ext.data.Store,{
   addField: function(field){
   if(typeof field == 'string'){
   field = {name: field};
   }
   this.recordType.prototype.fields.replace(field);
   if(typeof field.defaultValue != 'undefined'){
   this.each(function(r){
   if(typeof r.data[field.name] == 'undefined'){
   r.data[field.name] = field.defaultValue;
   }
   });
   }
   },
   removeField: function(name){
   this.recordType.prototype.fields.removeKey(name);
   this.each(function(r){
   delete r.data[name];
   });
   }
  });
  Ext.override(Ext.grid.ColumnModel,{
   addColumn: function(column, colIndex){
   if(typeof column == 'string'){
   column = {header: column, dataIndex: column};
   }
   var config = this.config;
   this.config = [];
   if(typeof colIndex == 'number'){
   config.splice(colIndex, 0, column);
   }else{
   colIndex = config.push(column);
   }
   this.setConfig(config);
   return colIndex;
   },
   removeColumn: function(colIndex){
   var config = this.config;
   this.config = [config[colIndex]];
   config.remove(colIndex);
   this.setConfig(config);
   }
  });
  Ext.override(Ext.grid.GridPanel,{
   addColumn: function(field, column, colIndex){
   if(!column){
   if(field.dataIndex){
   column = field;
   field = field.dataIndex;
   } else{
   column = field.name || field;
   }
   }
   this.store.addField(field);
   this.colModel.addColumn(column, colIndex);
   },
   removeColumn: function(name, colIndex){
   this.store.removeField(name);
   if(typeof colIndex != 'number'){
   colIndex = this.colModel.findColumnIndex(name);
   }
   if(colIndex >= 0){
   this.colModel.removeColumn(colIndex);
   }
   }
  });
  
  
  -------------------------------------------------------------------
  
  使用方法:Java代码 
  var grid = new Ext.grid.GridPanel({ 
   store: new Ext.data.SimpleStore({ 
   fields: ['A', 'B'], 
   data: [['ABC', 'DEF'], ['GHI', 'JKL']] 
   }), 
   columns: [ 
   {header: 'A', dataIndex: 'A'}, 
   {header: 'B', dataIndex: 'B'} 
   ] 
  }); 
  new Ext.Viewport({ 
   layout: 'fit', 
   items: grid 
  }); 
  grid.addColumn('C'); 
  grid.addColumn({name: 'D', defaultValue: 'D'}, {header: 'D', dataIndex: 'D'}); 
  grid.removeColumn('B'); 
  
  
  -------------------------------------------------------------------
  
  
  grid.addColumn('C'); //添加C列,空数据 
  grid.addColumn({name: 'D', defaultValue: 'D'}, {header: 'D', dataIndex: 'D'});//添加D列,有D数据 
  grid.removeColumn('B');//把之前的B列删除 







一开始的时候columns配置一个空的,gridPane({columns:[{}]})然后调用这个方法gridPanel.reconfigure(gridPanel.store, Ext.grid.ColumnModel colModel ) ;后面这个是你动态组装出来的ColumnModel这就OK了
分享到:
评论

相关推荐

    Ext grid 动态添加字段、列扩展

    Ext grid 动态添加字段、列扩展, 如何动态添加或者删除一个grid的列

    ext grid 动态扩展

    本篇将详细介绍如何实现 `Ext Grid` 的列动态添加。 1. **创建 ColumnModel** `Ext.grid.ColumnModel` 是用于定义 `GridPanel` 列结构的类。在创建 `ColumnModel` 时,我们需要提供一个包含列信息的 JavaScript ...

    Ext扩展控件-----可以在代码中动态为表格增加一列或者删除一列

    “AddRemovecolumn”插件是EXT Grid的一个自定义扩展,它允许用户在运行时动态地向Grid添加或移除列。这在需要根据业务需求或者用户交互动态改变列结构的场景下非常有用,例如在数据分析、报表生成或者配置式界面...

    ext动态列

    EXT动态列是一种在EXT JS框架下实现表格列动态生成的技术,它允许我们在运行时根据需求创建或修改表格列。EXT JS是一个强大的JavaScript库,专用于构建富客户端Web应用程序,其组件化的设计使得创建复杂的用户界面变...

    ext grid 显示数据

    10. **自定义行为和扩展**: EXT JS Grid允许开发者创建自定义的列类型、行模板、行选择模式等,满足个性化需求。通过继承和扩展EXT JS的API,开发者可以构建功能强大的数据视图。 通过阅读"5_使用Grids显示数据.doc...

    EXT grid导出EXCEL

    EXT Grid是一款基于JavaScript的强大的数据网格组件,广泛用于Web应用程序中展示、操作和管理大量结构化数据。它提供了丰富的功能,如排序、过滤、分页、编辑等,并且支持自定义列、行以及多种交互模式。在EXT Grid...

    EXT grid中根据每一行的状态列内容来让当前行显示不同的背景颜色

    EXT Grid是一款基于JavaScript的强大的数据网格组件,常用于展示大量结构化数据,并提供丰富的交互功能。在EXT Grid中,我们经常需要根据数据行的状态来定制显示效果,比如改变行的背景颜色,以便突出显示特定的信息...

    EXT4.3实现动态表单全动态

    - **动态列**:EXT4.3的`Ext.grid.Panel`允许在运行时动态添加、删除和调整列宽。开发者可以通过`columns`配置项或者`addColumn`、`removeColumn`方法实现。 - **数据源绑定**:grid可以与各种数据源(如Store)...

    ExtJs动态grid的生成

    这样,当数据字段改变时,Grid的列也会相应地更新。 3. **动态加载数据** - 使用Ext.data.Store与Ext.data.Model配合,可以动态加载来自服务器的数据。通常,你可能需要实现Store的proxy配置,如Ajax proxy,以...

    extgrid导出excel

    要实现"extgrid导出excel",我们需要使用特定的扩展或插件。一种常见的方法是使用"Exporter"插件,如压缩包中的"exporter"文件所示。这个插件允许我们将Grid中的数据转换为Excel格式,并提供下载链接供用户保存。 ...

    Ext框架的Grid使用介绍

    Grid组件在EXT JS中扮演着数据表格的角色,可以展示多列数据,并且支持排序、分页、筛选、编辑等功能。它的灵活性在于能够根据需求定制各种复杂的行为,如自定义列渲染、行编辑、拖放排序等。以下是一些关于EXT JS ...

    EXTgrid导出excel

    列定义包括列头文本、数据字段、宽度等属性,而行数据则是实际存储在EXTgrid中的记录。导出到Excel时,这些信息会被转换成Excel表格的格式。 要实现EXTgrid的数据导出,我们可以使用JavaScript库,如SheetJS(js-...

    jsp 实现的 EXT Grid 导出excel 例子

    Grid则是数据的容器,可以根据需要添加行操作、工具栏等扩展功能。 然后,导出Excel功能的实现主要依赖于服务器端的操作。JSP可以通过AJAX请求触发导出操作,当用户点击“导出”按钮时,EXT Grid的Store会将其当前...

    jq-extgrid表格插件

    jq-extgrid是一款基于jQuery的强大的表格插件,它极大地扩展了基础的jQuery grid功能,提供了丰富的特性以满足复杂的表格展示需求。在Web开发中,尤其是在数据展示和操作上,jq-extgrid是一个非常实用的工具。 ### ...

    EXt 可以编辑的grid

    在EXT JS这个强大的JavaScript框架中,"EXt 可编辑的grid"是一个常见的应用场景,它允许用户在数据网格中直接编辑单元格内的数据。EXT JS的CellEditing插件是实现这一功能的关键,它提供了优雅的方式来处理表格数据...

    Ext Grid表格分组统计

    在Ext JS这个强大的JavaScript框架中,`Ext Grid`是一个用于创建数据网格的组件,它能够高效地展示大量结构化数据。当我们需要对数据进行分组并同时显示统计信息时,`Ext Grid`提供了`GroupSummary`功能。在这个完整...

    Ext 根据数据库返回json动态生成grid列表实例

    在"Ext 根据数据库返回json动态生成grid列表实例"中,我们学习了如何使用ExtJS创建一个动态的Grid,它的列和数据都依赖于服务器返回的JSON数据。这个过程包括了Grid的基本配置、数据存储的设定以及如何处理和解析...

    Ext.grid.GridPanel属性祥解

    - 说明:分别设置了自动扩展列的最大和最小宽度。 - 示例:`autoExpandMax: 800, autoExpandMin: 30` 13. **columnLines** - 说明:布尔值,决定是否显示列之间的分隔线。 - 示例:`columnLines: true` 14. **...

    Extjs Grid 扩展实例

    4. **过滤**:通过`Ext.grid.filters.Filters`插件,我们可以为Grid的每一列添加过滤功能。这样用户可以根据需求筛选数据,提高数据操作的效率。 5. **排序**:默认情况下,Grid支持单击列头进行升序或降序排序。若...

    EXTGrid属性方法

    ### EXTGrid属性方法详解 #### 一、Ext.grid.GridPanel `Ext.grid.GridPanel`是ExtJS 4.0中的一个关键组件,用于创建数据表格。以下为该组件的一些核心属性及其含义: - **store**: 数据存储器,用于存放表格的...

Global site tag (gtag.js) - Google Analytics