`
253405050
  • 浏览: 9223 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

ExtJs 4 动态列的实现

 
阅读更多

ExtJs 3 的grid动态列实现:http://253405050.iteye.com/blog/970367

 

ExtJs 4实现方式:

 

1.创建DynamicGrid.js

Ext.define('Ext.grid.DynamicGrid',{
	extend : 'Ext.grid.Panel',
	
	alias : 'widget.dynamicgrid',
	
	initComponent : function() {
		var me = this;

        var store = Ext.create('Ext.data.JsonStore', {
	        fields: [],
	        pageSize: 5,
	        proxy: {
		        type: 'ajax',
		        url : 'data.js',
		        reader: {
		            type: 'json',
		            root: 'recordList',
		            totalProperty : 'recordCount'
		        }
		    }
	    });
	    
	    var headerCtCfg = {
            items: [],
            border: me.border
        };
        
        me.columns = headerCtCfg.items;
	    
	    me.headerCt = Ext.create('Ext.grid.header.Container', headerCtCfg);

		this.bindStore(store);
		this.bbar.bindStore(this.store, true);
		
        this.callParent();
	},
	
	onRender: function(ct, position) {
		this.store.on('load', function(store, records) {
			var jsonData = store.proxy.reader.jsonData;
			
			if (typeof(jsonData.columns) === 'object') {
				var columns = [];
				
				if (this.rowNumberer) {
					columns.push(new Ext.grid.RowNumberer());
				}
				
				if (this.checkboxSelModel) {
					this.selModel = new Ext.selection.CheckboxModel();
				}
				
				Ext.each(jsonData.columns, function(column) {
					columns.push(column);
				});
				
				var store = Ext.create('Ext.data.Store', {
					fields : jsonData.fields,
					data : jsonData.recordList
				});
				
				this.reconfigure(store, columns);
				this.render();
			}
		}, this);
		
		this.store.load();
		
		Ext.grid.DynamicGrid.superclass.onRender.call(this, ct, position);
	}
});

 

2.创建grid

var dynamicGrid = Ext.create('Ext.grid.DynamicGrid', {
        title: '测试动态列',
        renderTo: 'dynamic-grid',
        storeUrl: 'data.json',
        width : 600,
        height: 300,
        store: store,
        rowNumberer: true,
        checkboxSelModel: false,
        bodyStyle: 'padding-top: 22px',	//不知道什么原因,列头会把第一行给覆盖,所以需要加上这个样式
        bbar : new Ext.PagingToolbar({
        	store: store,
            pageSize: 5,
            displayInfo: true,
            displayMsg: '显示第{0}到{1}条数据,共{2}条',
            emptyMsg: "没有数据",
            beforePageText: "第",
            afterPageText: '页 共{0}页'
        })  
    });

 

返回的数据格式:

{  
    'fields': [  
        {'name': 'id', 'type': 'int'},  
        {'name': 'name', 'type': 'string'},  
        {'name': 'sex', 'type': 'boolean'}
    ],
    'success': true,  
    'recordCount': 50,  
    'recordList': [  
        {'id': '1', 'name': 'AAA', sex: 1},  
        {'id': '2', 'name': 'BBB', sex: 1},  
        {'id': '3', 'name': 'CCC', sex: 0},  
        {'id': '4', 'name': 'DDD', sex: 1},  
        {'id': '5', 'name': 'EEE', sex: 1}
    ],  
    'columns': [  
        {'header': 'ID', 'dataIndex': 'id'},  
        {'header': 'User', 'dataIndex': 'name'},  
        {'header': 'SEX', 'dataIndex': 'sex'}
    ]  
}
 
  • 大小: 23.1 KB
分享到:
评论
1 楼 姜中秋 2012-03-06  
有些乱啊,为什么在定义动态grid的时候,把store写里面,而且store还创建了两次啊
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    extjs 实现动态表头

    标题“extjs 实现动态表头”表明我们要讨论的是如何在ExtJS环境中构建一个能够动态改变列头的表格。动态表头的核心在于理解ExtJS的GridPanel组件和ColumnModel类。GridPanel用于显示数据,而ColumnModel则定义了...

    extjs实现动态树

    Accordion布局是ExtJS中的布局类型之一,允许在一个容器内多列垂直堆叠,每次只有一个面板展开。在动态树中,可以将树节点与Accordion布局关联,当点击节点时,对应的Accordion面板展开显示详细信息。 六、优化与...

    ExtJs动态grid的生成

    我们首先从标题"ExtJs动态grid的生成"开始,了解动态生成Grid的基本概念和实现方法。 动态生成Grid意味着在运行时根据需求创建和更新Grid组件,而不是在应用初始化时静态定义。这种灵活性允许开发者更好地响应数据...

    extjs 动态表格完整版

    4. **列动态添加和移除**:在运行时,可以使用`addColumn`和`removeColumn`方法动态添加或移除列,适应不同场景的需求。 5. **表格编辑**:ExtJS提供两种编辑模式,行编辑和单元格编辑。`Ext.grid.plugin....

    ExtJS3.2列布局

    "ExtJS3.2列布局"是这个框架中的一个重要概念,尤其在处理form表单时非常实用。 列布局(Column Layout)是ExtJS的一种布局策略,它允许你在同一行内创建多个并排显示的区域,每个区域可以包含不同的组件,如文本框...

    Extjs 自定义树结构实现以及动态表头实现

    在本文中,我们将深入探讨如何使用ExtJS框架来实现自定义树结构以及动态表头的功能。ExtJS是一款强大的JavaScript库,常用于构建富客户端应用程序,它提供了丰富的UI组件和强大的数据绑定机制。VS2015是Visual ...

    extjs动态生成表格,前台+后台

    4. Ext.Ajax.request:ExtJS提供的异步请求API,用于与服务器进行通信。 5. JSON:数据交换格式,用于传递后端返回的列信息。 6. 动态生成:通过JavaScript代码动态创建ColumnModel和Store,从而实现表格的动态生成...

    ExtJS实现动态读写Checkboxgroup

    总结起来,动态读写ExtJS的CheckboxGroup涉及创建CheckboxGroup、读取选中值、设置选中值以及监听变化。通过结合`ext-basex.js`文件,你可以构建出更复杂的交互式表单和应用程序。记住,始终关注用户需求和体验,...

    ExtJS4 2学习 21 动态菜单与表格数据展示操作总结篇

    在"ExtJS4 2学习 21 动态菜单与表格数据展示操作总结篇"中,我们将深入探讨两个核心组件:动态菜单(Dynamic Menus)和表格数据展示(Grid Data Display),以及如何在实际应用中进行操作。 动态菜单在Web应用中...

    Extjs动态GRID

    在EXTJS中,动态GRID指的是可以实时调整列宽、列数甚至列结构的网格视图,以适应不同的数据需求和用户界面变化。 1. 动态列创建与删除: EXTJS的Grid Panel支持在运行时动态添加或移除列。这可以通过调用`columns....

    Extjs4 grid使用例子

    总结来说,"Extjs4 grid使用例子"是一个实践教程,展示了如何在MVC架构下利用ExtJS4的Grid组件处理数据,实现数据的增删改功能。通过这个例子,开发者可以学习到MVC的设计理念,以及如何有效利用Grid组件提升Web应用...

    ExtJS文字按钮列

    在ExtJS中,"按钮列"(Button Column)是一种特殊的列类型,常用于表格面板,允许用户在每一行数据的特定列上执行操作。 标题提到的"ExtJS文字按钮列"是指在ExtJS表格中添加一列,该列包含的是文字按钮而非图片按钮...

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

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

    extjs4 treeGrid实例

    在本实例中,我们关注的是如何利用ExtJS4实现一个TreeGrid来创建一个report报表。 首先,理解TreeGrid的基础概念。TreeGrid是树形结构和网格的结合,它将树节点的层次结构与表格的列布局结合在一起,每个树节点都...

    extjs 数据导出到Excel,数据列自选

    标题中的“extjs 数据导出到Excel,数据列自选”指的是使用EXTJS框架实现一个功能,让用户能够从Web应用中选择需要的数据列,并将这些选定的数据导出为Excel文件。EXTJS是一个强大的JavaScript库,专门用于构建富...

    extjs4 ComboBox 点击下拉框 出现grid效果

    在EXTJS4中,ComboBox是一个常用的组件,它用于创建下拉选择框,通常用于输入框的辅助选择。这个组件提供了一种用户友好的方式来从一组预定义的选项中进行选择。然而,根据你的标题和描述,你似乎遇到了一个特别的...

    ExtJS4 doc文档

    ExtJS4的API文档详细阐述了每个组件的用法、配置项和事件,是开发者解决问题和实现功能的重要参考。 通过深入学习并掌握这些文档,开发者不仅能理解ExtJS4的基础概念,还能熟练地运用到实际项目中,构建出功能丰富...

    Extjs4.0 列隐藏和滚动条动态加载

    在ExtJS 4.0版本中,它提供了一系列功能,包括表格面板(Grid Panel)的列管理以及滚动条的动态加载。让我们深入探讨这些核心概念。 1. **列隐藏与显示** 在ExtJS 4.0中,表格面板允许用户动态隐藏或显示列,以...

    EXTJS动态树的实现举例示例代码

    在"langsinext"这个压缩包中,可能包含了一个完整的EXTJS动态树实现示例代码,你可以解压后查看具体实现细节,学习如何将上述概念应用到实践中。记得根据你的实际需求调整数据源、模型字段以及TreePanel的配置。

    extjs2.0 下拉列

    在本例中,我们将重点讨论如何在 ExtJS 2.0 中实现下拉列表功能。 下拉列表在 Web 应用程序中非常常见,通常用于提供可选的选项供用户选择。在 ExtJS 中,下拉列表可以通过创建 `Ext.form.ComboBox` 实现。这个组件...

Global site tag (gtag.js) - Google Analytics