`

ext editGridPanel 动态头和数据

    博客分类:
  • ext
阅读更多
很久没有写技术文章了 杯具....
最近一段时间  没有心思去忙乎这些
最近正好在做一个Ext 项目
后台数据是从oracle agile 中抓取出来的
先看看截图吧


editGridPanel 中的 ColumnModel 只是一个数据  所以我们当然可以做成动态的



首先我们如果需要些一个 死的动态头 肯定是这样定义的
//我只是举个例子
         var colModel=new Ext.data.ColumnModel({
            header:'列1',
            dataIndex:'name'
         },{  header:'列1',
            dataIndex:'name2'},
           {  header:'列1',
            dataIndex:'name3'},
            {  header:'列1',
            dataIndex:'name4'}
          );

OK  那么行啊  我们后台就可以传过来这样的数据

我的后台是这样写的
然后我们通过一个Ajax 请求 得到这个json 数组
然后通过遍历这个 对象
就可以创建自己的一个动态头了
var configCol;
configCol.push({});

// Ajax start 请求显示头信息
	var headerUrl = contextPath + "/BatchHandleAction!findAllData.action";
	// 动态 Aajax 请求表格数据
	Ext.Ajax
			.request( {
				url : headerUrl,
				method : 'POST',
				params : {
					operationType : selectOpertionTypeVal,
					start : 0,
					limit : 100,
					status : selectStatusVal

				},
				success : function(rs, request) {
					if (isCollapse) {
						heigthGrid = document.documentElement.clientHeight - 60;
					} else {
						heigthGrid = document.documentElement.clientHeight - 250;
					}
					if (editGridPanel != null) {
						editGridPanel.destroy();
					}
					// 判断是否是同一个提交 是则不请求
					var result = rs.responseText;// 拿到结果集,此时为字符串
					var json = Ext.util.JSON.decode(result);// 将字符串转换为json类型
					sm = new Ext.grid.CheckboxSelectionModel();
					configCol = [ new Ext.grid.RowNumberer(), sm ];
					var dataIndex;
					var header;
					var editor;
					var type;
					arr = new Array();
					arr[0] = oNumID;
					// alert(oNumID);
					configCol.push( {
						id : oNumID,
						header : 'Number',
						width : defaultColWidth,
						renderer : function(value, metatdata, record, rowIndex,
								colIndex, store) {
							return "<a href='" + record.data.url
									+ "' target='blank'>" + value + "</a>"
						},
						dataIndex : oNumID
					});

					// 添加一个 排序列
					configCol.push( {
						id : 'sortColumn',
						dataIndex : 'sortColumn',
						header : 'sortByEdit',
						sortable : true
					});
					var count = 0;
					// 组装表头
					for ( var i = 0; i < json.fields.length; ++i) {
						dataIndex = json.fields[i].dataIndex;
						header = json.fields[i].header;
						editor = json.fields[i].Editable;
						type = json.fields[i].Type;
						arr[i + 1] = dataIndex;
						// 如果此列是可编辑的列
						if (editor == 'Y') {
							// 判断可编辑的 控件是什么
							if ('MultiText' == type) {
								defaultColWidth = defaultColWidth * 2;
								editor = new Ext.form.TextField( {
									autoCreate : {
										tag : "textarea",
										rows : 4,
										autocomplete : "off"
									}
								});
							} else if ('List' == type) {
								editor = new Ext.form.ComboBox( {});
							} else if ('Date' == type) {

								editor = new Ext.form.DateField( {
									format : 'y-m-d'
								});

							} else {
								editor = new Ext.form.TextField();
							}
							configCol.push( {
								header : header,
								dataIndex : dataIndex,
								width : defaultColWidth,
								editor : editor
							});

						} else {
							configCol.push( {
								id : dataIndex,
								renderer : function(value) {
									return "<div class='desc'>" + value
											+ "</div>";
								},
								width : defaultColWidth,
								header : header,
								dataIndex : dataIndex
							})
						}
						count++;
					}
					// 添加批量审批驳回 下拉
					configCol.push( {
						header : 'operation',
						dataIndex : 'operation',
						editor : new Ext.form.ComboBox( {
							allowBlank : false,
							selectOnFocus : true,
							mode : 'local',
							triggerAction : 'all',
							editable : false,
							store : new Ext.data.SimpleStore( {
								data : [ [ "Approve" ], [ "Reject" ] ],
								fields : [ "value" ]
							}),
							name : 'approreject',
							displayField : 'value',
							listeners : {
								'select' : function() {
									// 设置
							// 批量审批驳回按钮可用
							btnApproveReject.enable();
						}
					}
						})
					});
					;
					arr[count + 1] = 'msg';
					// baseId[configStore.getCount() +
					// 1] = 'msg';
					arr[count + 2] = 'url';
					configCol.push( {
						id : 'url',
						width : defaultColWidth,
						header : 'url',
						dataIndex : 'url'
					});
					configCol.push( {
						id : 'msg',
						width : defaultColWidth,
						header : 'Update Message',
						dataIndex : 'msg'
					});
					// 设置表格表头
					cm = new Ext.grid.ColumnModel(configCol);
					// 设置默认可以排序
					cm.defaultSortable = true;
}

  
  • 大小: 41.3 KB
  • 大小: 100.3 KB
  • 大小: 80.2 KB
分享到:
评论
4 楼 xiaohewoai 2010-04-07  
chemzqm 写道
nice try!But the code in not well encapsulated,it's difficult for reuse and maintain

不好意思! 由于 项目时间赶  没有去好好的封装
所以大家写项目的时候 千万  别模仿本人
3 楼 chemzqm 2010-04-07  
nice try!But the code in not well encapsulated,it's difficult for reuse and maintain
2 楼 xiaohewoai 2010-04-07  
czpae86 写道
gooooooooooooooood~!
楼主用到了下面方法了吧?
reconfigure( Ext.data.Store store, Ext.grid.ColumnModel colModel ) : void


没有
我只用了
var cm = new Ext.grid.ColumnModel(configCol);
然后把这个 ColumnModel 放到editGridPanel 就行了
1 楼 czpae86 2010-04-07  
gooooooooooooooood~!
楼主用到了下面方法了吧?
reconfigure( Ext.data.Store store, Ext.grid.ColumnModel colModel ) : void

相关推荐

    Ext 动态加载表单数据

    Ext Form提供了一种结构化的方式来组织这些字段,并提供了验证、提交和数据绑定等功能。 动态加载表单数据涉及到的主要知识点包括: 1. **JSON数据格式**:JSON(JavaScript Object Notation)是一种轻量级的数据...

    ext树 无限级 json 数据格式 动态加载

    在EXT JS这个强大的JavaScript库中,树形组件...总的来说,EXT树的无限级JSON动态加载涉及数据结构、JSON格式、数据存储以及异步加载等多个方面,理解并熟练运用这些技术,能够帮助我们构建更加高效和灵活的树形界面。

    EXT实现动态树的功能

    在EXT中实现动态树的功能是一项常见的需求,特别是对于那些需要展示层次结构数据的应用。动态树允许用户在运行时进行编辑、添加、删除和批量操作节点,从而提供更加灵活的数据管理体验。 首先,我们要理解EXT中的树...

    EXT2.0动态树,分页!

    动态树结构是EXT2.0中的一个重要特性,它允许用户交互地展开和折叠节点,以显示或隐藏数据层次。这种结构通常用于表示层次化的数据,例如文件系统、组织架构或菜单导航。EXT2.0通过异步加载数据来实现动态性,只在...

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

    EXT4.3实现动态表单全动态是一种在Web开发中常用的技术,主要应用于构建高度可配置和可扩展的用户界面。这种技术的核心是利用EXTJS库的EXT4.3版本,EXTJS是一个强大的JavaScript框架,专门用于创建富互联网应用程序...

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

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

    ext grid数据绑定

    在EXT JS这个强大的JavaScript...综上所述,EXT Grid数据绑定涉及数据模型、视图和数据源的交互,而数据查找和重填则是数据操作的关键步骤。通过熟练掌握这些概念和方法,开发者能够构建出高效、动态的数据展示应用。

    基于EXT2.0.2表格间数据拖拽

    `ext-core-debug.js`和`ext-study.zip`可能包含EXT的核心库和学习资源,`resources`文件夹则包含了CSS样式和图片等资源。 总结来说,EXT2.0.2的表格间数据拖拽涉及到EXT Grid、DataStore、DragDrop和DropTarget的...

    extjs中Ext.Panel和TreePanel 组件动态加载本地页面数据

    总结来说,`Ext.Panel`和`TreePanel`在EXTJS中是两个关键的组件,它们支持动态加载本地数据,提高了用户体验。理解这两个组件的工作原理和如何利用`Store`、`Ajax`、`TreeStore`进行数据加载,是EXTJS开发中的重要...

    ext grid 动态扩展

    在EXT JS中,`Ext Grid` 是一个强大的数据展示组件,它可以用来显示和操作大量数据。动态扩展功能允许我们根据需求在运行时增加或减少列,增强了应用的灵活性。本篇将详细介绍如何实现 `Ext Grid` 的列动态添加。 1...

    EXT构造动态树 包括增删改操作

    EXT是一个强大的JavaScript库,主要用于构建富客户端应用,尤其在数据可视化和用户界面设计方面表现出色。动态树是一种可交互的数据结构,它允许用户通过增、删、改操作来管理层次结构的数据。EXT提供了丰富的组件来...

    Ext3.0 动态数据 Chart 初探

    Ext JS是一个强大的JavaScript库,专为构建富客户端应用程序设计,其图表组件(Chart)功能强大,支持丰富的图表类型和动态数据更新。本文将深入探讨Ext3.0版本中的动态数据Chart特性。 首先,我们需要了解Ext JS ...

    ext动态获取Xml数据并解析信息

    ### ext动态获取XML数据并解析信息 ...通过以上步骤,我们成功实现了使用Java后端动态生成XML数据,并通过Ext JS前端框架进行接收和解析的过程。这种机制非常适合于处理需要实时更新或频繁交互的数据场景。

    EXT 上传图片 删除图片,显示图片,PHP

    图片删除通常涉及到两个步骤:前端的UI操作和后端的数据清理。在EXT中,可以添加一个删除按钮,点击时触发一个请求到PHP,请求携带图片的唯一标识。PHP端根据这个标识找到对应的图片文件并删除。完成后,前端接收到...

    Ext4.0 动态修改ComboBox选择项(本地模式)

    本知识点主要聚焦于如何在Ext4.0框架下动态修改ComboBox的选择项,特别是在本地模式下进行操作。Ext4.0是Sencha Ext JS的一个版本,它提供了一个强大的JavaScript组件库,用于构建富客户端应用程序。 首先,...

    EXT创建动态的折线图

    在这个场景下,"EXT创建动态的折线图"指的是利用EXT库来动态地展示数据变化的过程,这种图表常用于监控实时数据或者分析历史趋势。 动态折线图的核心在于数据的实时更新和图表的平滑刷新。EXT提供了一个名为`Ext....

    Ext4 动态加载js例子

    `Ext.Loader` 是 Ext4 中的一个核心特性,用于动态加载所需的 JavaScript 类库和模块,这在开发大型应用时尤其有用,因为它可以显著减少页面初次加载时的资源需求。 动态加载的核心在于按需加载,即只有在实际需要...

    ext实现动态树

    在现代Web应用开发中,树形结构是一种非常常见的UI组件,它可以帮助用户更清晰地组织和浏览分层的数据结构。ExtJS是一款强大的JavaScript框架,提供了丰富的UI组件库,其中包括树形控件(Tree)。本文将详细介绍如何...

    深入浅出Ext_JS:数据存储与传输

    《深入浅出Ext_JS:数据存储与传输》 ...通过合理使用数据模型、存储、Proxy和数据绑定,开发者可以构建出高效、灵活且易于维护的Web应用程序。深入理解和掌握这些概念,对于提升Ext JS开发技能至关重要。

    Ext数据模型Store

    Ext数据模型中的Store是EXT框架中非常核心的一个概念,它是数据管理的主要接口,负责存储和管理数据集。Store内部使用了`Ext.util.MixedCollection`数据结构,这使得它可以同时作为映射和列表来操作数据,并在数据...

Global site tag (gtag.js) - Google Analytics