`

Ext动态生成菜单

    博客分类:
  • Ext
阅读更多
根据传递过来的参数生成单选和多选菜单,并在单击菜单子项和离开多选菜单项后提交请求
Ext.onReady(function(){
	// 图表报表工具条
	var repImgToolBar; 
	
	// 报表详情工具条
	var repDetailToolBar; 
	
	// 创建单选菜单
	function createChaMenu() { 
		// 对象的显示值
		// analyObjSeleValue是一个数组里面放的是每个菜单的title值,如 =[北京,上海,西安]
		var arr = analyObjSeleValue.split(","); 
		
		// 对象的key
		// objKey是一个数组里面放的是每个菜单的name值,如 =[beijing,shanghai,xian],与上面的对应
		var objKey = Ext.get("hide_ayobj_btn").dom.innerHTML.split(","); 
		
		var menuArray = []; 
		var curMenu; 
		for ( var i = 0; i < arr.length; i++) { 
			curMenu = { 
				text : arr[i], 
				name : i, 
				handler : function(text) { 
					alert(text.text + " , " + objKey[text.name]); 
					// 判断是否为局向
					if (analyObjValue == "landir") { 
						var opc = objKey[text.name].split("-")[0]; 
						var dpc = objKey[text.name].split("-")[1]; 
						
						var p1_sdrwhere = Ext.get('p1_where'); 
						p1_sdrwhere.dom.value = " dpc = 11500 "; 
					} 
					
					var p1_sdrwhere = Ext.get('p1_where'); 
					p1_sdrwhere.dom.value = " dpc = 11500 "; 
					
					// 提交表单
					var sdrFormImg = Ext.get('sdrFormImg'); 
					sdrFormImg.dom.submit(); 
				} 
			}; 
			menuArray.push(curMenu); 
		} 
		return menuArray; 
	} 
	
	// 创建多选菜单
	function createTarMenu(rownum) { 
		var menuArray = []; 
		var curMenu; 
		
		// 默认加载第一个分析指标(grid第一行)
		// changeAndKPIName = ["3#attemptcount,alerting...bability,sdcchdropcount",
		// "7#xldhl,tchdropcount,zp...rduration,pjzysc,pjthsc"]
		var targetArray = changeAndKPIName[rownum].split("#")[1].split(","); 
		
		// 默认不勾选,传递过来的指标设置为勾选
		for ( var m = 0; m < ay_all_target[0].length; m++) { 
			var isCheck = false; 
			for(var n = 0; n < targetArray.length; n++){ 
				// 有被选择的指标加上勾选状态
				if(targetArray[n] == ay_all_target[0][m].data.name){ 
					isCheck = true; 
				} 
			} 
			curMenu = { 
				checked : isCheck, 
				text : ay_all_target[0][m].data.title, 
				name : ay_all_target[0][m].data.name 
			}; 
			menuArray.push(curMenu); 
		} 
		return menuArray; 
	} 
	
	/**
	 * 为避免重复菜单,每次切换tabPanel时删除工具条和菜单
	 */ 
	function removeMenu() { 
		if (Ext.fly("objchange")) { 
			Ext.fly("objchange").remove(); 
		} 
		if (Ext.fly("targetsele")) { 
			Ext.fly("targetsele").remove(); 
		} 
		if (Ext.fly("repImgMenu")) { 
			Ext.fly("repImgMenu").remove(); 
		} 
	}
	// 动态生成菜单
	// tabVal 是当前的tabPanel对象,tabIndex是生成tabPanel时设定的参数
	// 在点击每个tabPanel时,调用此方法
	function dynamicCreateMenu(tabVal) { 
		var objChangeMenu = []; 
		objChangeMenu = createChaMenu(); 
		
		// first Menu
		var firstMenu = new Ext.menu.Menu( { 
			id : 'objchange', 
			items : objChangeMenu 
		}); 
		var rowIndex = tabVal.tabIndex; 
		var targetSeleMenu = []; 
		targetSeleMenu = createTarMenu(rowIndex); 
		
		// second Menu
		var secondMenu = new Ext.menu.Menu( { 
			id : 'targetsele', 
			items : targetSeleMenu, 
			listeners : { 
				/**
				 * 选中时只保存选中状态,不隐藏
				 * 
				 * @param {Object}
				 *            bi baseItem
				 * @param {Object}
				 *            e check EventObject
				 * @return {TypeName}
				 */ 
				'itemclick' : function(bi, e) { 
					if (bi.checked) { 
						bi.setChecked(false); 
					} else { 
						bi.setChecked(true); 
					} 
					return false; 
				}, 
				
				/**
				 * 让菜单隐藏之提交表单
				 * 
				 * @param {Object}
				 *            em 当前menu
				 */ 
				'beforehide' : function(em) { 
					Ext.each(em.items.items, function(ite) { 
						// 给相应的form里面的域赋值
						// 如果没有选择,隐藏表单中设为0
						if (!ite.checked) { 
							Ext.get("p1_" + ite.name).dom.value = 0; 
						} 
					}); 
					
					// 提交图表对比表单
					var sdrFormImg = Ext.get('sdrFormImg'); 
					sdrFormImg.dom.submit(); 
				} 
			} 
		}); 
		
		repImgToolBar = new Ext.Toolbar( { 
			id : 'repImgMenu', 
			renderTo : 'rightRepImgMenu', 
			style : 'align: right', 
			width : 150, 
			items : [ { 
				text : 'First', 
				menu : firstMenu 
			}, "-", { 
				text : 'Second', 
				menu : secondMenu 
			} ] 
		}); 
	} 
});
1
10
分享到:
评论

相关推荐

    EXTJS 动态生成下来树形框

    NULL 博文链接:https://chinadeng.iteye.com/blog/794209

    Ext官方中文教程(可打包下载)

    从源码生成Ext 基础用法: DomQuery基础 Ext中的事件 简述模板 模板(Templates)的函数 教你创建Ext UI控件 事件的处理 Ext中的继承 Ext的类设计 Ajax通讯 JSON处理方法 函数的原型扩展 组件的使用: Tab标签...

    ext生成树节点带链接

    extjs生成树菜单,多个子节点,支持无限分类,并且各个子菜单链接都加上,点击可触发相应的事件处理或者页面跳转。这个本来是在yii后台用的

    利用Ext Js生成动态树实例代码

    需求 要求生成一颗部门树,初始只列出根部门 当点击一个部门节点时,动态载入该部门下的直属子部门,并展开该部门节点 部门节点要求支持右键单击事件,当点击右键时,列出相关操作菜单 二. 关键类 这里主要涉及Ext ...

    ASP.NET结合EXTJS动态生成Grid列表的演示

    内容索引:.NET源码,Ajax相关,EXTjs 结合EXTJS类库动态生成Grid数据列表的演示,如果你没有配置数据库信息,那么程序运行时会自动弹出数据安装窗口,安装完成就可以查看演示了,基于EXT风格的Ajax数据列表,简洁实用...

    EXT2.0中文教程

    8.3. DomHelper和Template动态生成html 8.3.1. DomHelper用来生成小片段 8.3.2. 批量生成还是需要Template模板 8.4. Ext.data命名空间 8.4.1. proxy系列 8.4.1.1. 人畜无害的MemoryProxy 8.4.1.2. 常规武器HttpProxy...

    Ext 开发指南 学习资料

    8.3. DomHelper和Template动态生成html 8.3.1. DomHelper用来生成小片段 8.3.2. 批量生成还是需要Template模板 8.3.3. 醍醐灌顶,功能强劲的模板引擎XTemplate。 8.4. Ext.data命名空间 8.4.1. proxy系列 8.4.1.1. ...

    基于内存多叉树的Ext JS无限级树形菜单实现方案

    基于内存多叉树的Ext JS无限级树形菜单实现方案,一种构建多级JSON的方法;一次性构造多级JSON字符串,一次性生成树形菜单。

    EXT教程EXT用大量的实例演示Ext实例

    8.3. DomHelper和Template动态生成html 8.3.1. DomHelper用来生成小片段 8.3.2. 批量生成还是需要Template模板 8.4. Ext.data命名空间 8.4.1. proxy系列 8.4.1.1. 人畜无害的MemoryProxy 8.4.1.2. 常规武器...

    Ext Js权威指南(.zip.001

    4.4.4 实现动态加载:ext.loader / 151 4.4.5 管理类的类:ext.classmanager / 159 4.4.6 类创建的总结 / 161 4.5 动态加载的路径设置 / 163 4.6 综合实例:页面计算器 / 165 4.7 本章小结 / 169 第5章 ext ...

    ext-gen:Sencha ExtGen-用于Ext JS的开放工具

    Ext JS是一个全面且安全JavaScript框架,具有包含140多种企业级UI组件的强大库,这些组件包括数据网格,数据透视网格,树,图表,D3可视化,表单,日历,按钮,菜单等。 Ext JS功能丰富的组件已预先构建和测试,...

    ext-ux-grid-gridviewmenuplugin

    表格的菜单插件,用来给ext的menu添加事件和生成视图

    掏钱学Ext(完整版) 附全部源码

    8.3. DomHelper和Template动态生成html 8.3.1. DomHelper用来生成小片段 8.3.2. 批量生成还是需要Template模板 9. 沉寂吧!我们要自己的控件。 9.1. 下拉树形选择框TreeField 9.2. 带全选的checkbox树形...

    Vs2005+Access+Extjs三层架构源码

    Ext.aspx: ExtJs格式文件 List.aspx: Asp.net文件 一、Extjs文件如:友情链接 A、文件名称 说明:表名大小写与菜单的modulecode填写一致 1、删除文件:Del+表名.js 2、编辑文件:Edit+表名.js 3、列表文件...

    grub4dos-V0.4.6a-2017-02-04更新

    可以正确识别 mkisofs 2.00/2.01 生成有 bug 的 Joliet 格式光盘。 2013-10-18 1.新增功能类似CMD的PATHEXT,可以设置默认的扩展名。 使用command --set-ext设置,每个扩展名使用";"分隔 例子: command --...

    phpStudy实现WebService实例,亲自测试及写了例子

    本方法使用了phpStudy自带的php_soap.dll,不需要下载任何插件,只需要在phpStudy的菜单中打勾php_soap(见压缩包中的截图) index.html中的部分说明: PHP+SOAP实现WebService测试 配置 环境配置:PhpStudy...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -动态生成菜单实例(other\menu_dynamic_run.aspx和other\menu_dynamic2_run.aspx)(feedback:shguo)。 -优化AJAX的内部实现,每个页面保存的ViewState现在减少1/3左右(重要更新)。 -优化Tree节点的NodeId自动...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 mysql版本_spring3.0

    菜单管理:增删改查菜单 ztree(自定义菜单)业务菜单和系统菜单分离 5. 数据字典:无限级别,支持多级别无限分类。内设编号,排序等 6. 系统设置:修改系统名称,邮件服务器配置,短信账号设置,图片水印配置,...

Global site tag (gtag.js) - Google Analytics