最近经常碰到这样一种情况,事先并不知道grid中每一列的信息,也就是不知道 grid 的ColumnModel中的相信信息,需要经过后台才能获取所有列的信息,此时就需要用到grid列的动态生成。
目前只研究了两种方式的动态grid生成方法,下面附上方法。
第一种方法:
需要导入一个插件,AutoGrid.js,在网上都可以下载到,附件也上传了。
前台代码如下
var grid = new Ext.ux.AutoGridPanel({
title:'动态grid',
renderTo: 'w',
height: 300,
width: 1200,
loadMask: true,
store : new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:"../ReceivableAccountServlet"}),
reader: new Ext.data.JsonReader()
})
});
grid.store.load({params: {meta: true}});
后台返回的JSON字符串格式如下
{"metaData":{"root":"rows","id":0,
"fields":[{"name":"employee_id","header":"雇员ID"},
{"name":"employee_name","header":"姓名"},
{"name":"receivable_month","header":"应收年月"},
{"name":"name0","header":"产品1"},
{"name":"name1","header":"产品2"},
{"name":"name2","header":"产品3"}]},"
rows":[{"employee_id":3,"employee_name":"张三","receivable_month":201010,"name0":33,"name1":11,"name2":22}]}
第一种方法只能做动态grid的显示操作,并不能对Gird进行编辑保存等操作。下面介绍第二种方法
还是先贴前台代码吧
Ext.onReady(function(){
Ext.Ajax.request({
url:"../ReceivableAccountServlet",
params:{bill_version_id:bill_version_id},
success:function(response,config){
json=Ext.util.JSON.decode(response.responseText);
var cm = new Ext.grid.ColumnModel(json.columModel);
var store = new Ext.data.JsonStore({
data:json.data,
fields:json.fieldsNames
});
var grid = new Ext.grid.EditorGridPanel({
title:'账单明细',
region: 'center',
split: true,
renderTo: 'w',
height: 300,
width: 1200,
cm:cm,
store:store
});
},
failure:function(){
}
});
});
后台传回的JSON字符串如下
{'action':true,'message':'error!',
'data':[
{'number':'1','text1': '3','info1': '4','special1': '5'}
],
'columModle':[
{'header': '序号','dataIndex': 'number','width':40},
{'header': '编码','dataIndex': 'text1',editor:new Ext.grid.GridEditor(new Ext.form.NumberField())},
{'header': '名称','dataIndex': 'info1'},
{'header': '金额','dataIndex': 'special1'}
],
'fieldsNames':[{name:'number'},{name:'text1'},{name:'info1'},{name:'special1'}]
}
此种方法是我最喜欢用的,功能强大。。。
其实不管你是哪一种grid,最重要的还是数据的对应关系。只要明确如何去解析JSON字符串,一切都很简单,万变不离其宗!
分享到:
相关推荐
Extjs动态Grid的生成 htm
这个例子程序源码主要展示了如何将两者结合,动态生成Grid列表。 在ASP.NET中,开发者通常使用C#或VB.NET作为后端编程语言,通过ASP.NET MVC或Web Forms模式来处理HTTP请求并返回HTML响应。EXTJS则负责在客户端渲染...
在本文中,我们将深入探讨如何使用ExtJS框架在前端动态生成表格,并结合后端数据进行展示。ExtJS是一个强大的JavaScript库,专用于构建富客户端Web应用程序,尤其在创建交互式用户界面方面表现突出。动态生成表格是...
这是利用sencha cmd 生成的GridFilterDemo工程中的app和build文件夹,其余文件过大并且与主题无关,因此未包含。具体方法,请参看我的博客: 《Extjs4.2 Grid Filter Feature 表格过滤特性》
"ExtJS 4.2 动态生成Toolbar" 在 ExtJS 4.2 中实现动态生成 Toolbar,以满足 gridPanel 中动态生成带按钮及查询条件的工具栏的需求。本文将详细介绍如何实现动态生成 Toolbar,包括视图层、 Toolbar.js 和后台调用...
在EXTJS中,Grid控件是用于展示大量结构化数据的关键组件,具有丰富的功能和高度可定制性。本文将深入讲解EXTJS Grid如何实现数据导出到Excel文件的功能。 首先,我们要明白EXTJS Grid的数据导出到Excel的过程通常...
6. **动态列生成**:根据后台返回的列信息动态创建和配置Grid的列,这通常涉及到解析JSON数据中的列头信息。 7. **优化性能**:考虑使用分页(Paging)和延迟加载(Lazy Loading)来优化大数据量的加载,提高用户...
1. **EXTJS Grid组件**:EXTJS Grid是EXTJS的核心组件之一,它允许开发者创建可分页、可排序、可过滤的数据表格。Grid可以与各种数据源(如JSON、XML或内存中的数组)配合使用,并通过Store对象进行数据的加载和管理...
内容索引:.NET源码,Ajax相关,EXTjs 结合EXTJS类库动态生成Grid数据列表的演示,如果你没有配置数据库信息,那么程序运行时会自动弹出数据安装窗口,安装完成就可以查看演示了,基于EXT风格的Ajax数据列表,简洁实用...
- 对于Grid的列,我们可以使用`Ext.grid.column.Column`的`tooltip`配置项,或者使用`renderer`函数来动态生成Tooltip内容。 2. **配置列的Tooltip**: - 在定义Grid的列模型时,可以直接在列配置对象中设置`...
这个函数是ExtJs框架提供的用于生成比较器的函数,它可以根据sorters参数来生成比较器。sorters参数是一个数组,每个元素都是一个sorter对象,sorter对象有两个属性:property和direction。property属性是要排序的...
在ExtJS4中,动态生成的Grid控件是一种常见的数据展示方式,它可以灵活地根据后台数据动态构建列结构。然而,对于这样的Grid,如何将其内容导出为Excel格式可能会成为一个挑战。本文将介绍一个实现这一功能的示例,...
EXTJS代码生成器是一款专为开发人员设计的工具,它能够自动生成基于EXTJS框架的MVC模式应用程序的代码,显著提升开发效率。EXTJS是一个强大的JavaScript库,用于构建富客户端Web应用,提供了丰富的组件库和强大的...
2. 添加一个按钮或菜单项,当点击时触发Grid的`exportStore`方法,该方法会根据配置的`Exporter`插件生成并下载文件。 3. 在事件处理函数中,调用`grid.getView().getFeatures()[0].exportStore(store, type, ...
在标题中提到的"ExtJS4.0 分享Grid导出Excel插件"是一个扩展功能,允许用户将ExtJS Grid中的数据导出为Microsoft Excel格式的文件。这对于数据分析、报表生成以及数据共享非常有用。 这个插件是针对ExtJS 4.0版本...
这个"extjs动态表头"的资源很可能是一个插件或组件,名为`Ext.ux.grid.DynamicGridPanel.js`,它扩展了ExtJS的标准GridPanel,增加了动态调整列的能力。 动态表头的核心功能包括: 1. **实时编辑**:用户可以在...
在IT领域,特别是Web开发中,ExtJS是一个广泛使用的JavaScript框架,它提供了丰富的用户界面组件,包括表格(Grid)等。动态表头是ExtJS中一个高级特性,它允许开发者根据需要在运行时动态地创建和修改表格的列结构...
在"Extjs tree and Grid(Buffer Grid,Progress Grid)"这个主题中,我们将深入探讨这两个核心组件以及它们的特定变体——缓冲网格(Buffer Grid)和进度网格(Progress Grid)。 1. **ExtJS Tree** - 树形控件...
本文将深入探讨如何在ExtJS框架下实现GridPanel的动态列生成,这对于那些需要根据用户操作或数据源变化实时调整列布局的应用场景至关重要。 ### ExtJS GridPanel动态列生成详解 #### 一、背景理解 在ExtJS中,`...