`

用Ext做菜单式的Combox

阅读更多
Ext提供了Combox,也提供了Menu做多级菜单。下面的代码把二者组合起来,形成一个带多级菜单的Combox。效果图如附件。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />
<script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ext/ext-all.js"></script>
<script>
var metawork={};
metawork.searchFieldsCache = new Object();
var dataFields = [
		{
			id:"title",
			name:"标题",
			type:"string"
		},{
			id:"id",
			name:"标识",
			type:"int"
		},{
			id:"organization",
			name:"所属机构",
			type:"",
			children:[			//代表子属性
				{
					id:"id",
					name:"标识",
					type:"int"
				},{
					id:"id",
					name:"名称",
					type:"string"
				}
			]
		}
	];

var fieldsEditor = new Ext.form.ComboBox({
	store:new Ext.data.SimpleStore({fields:[],data:[[]]}), 
	displayField:'name',
	mode: 'local',
	editable:false,
    triggerAction: 'all',
    tpl: '<div id="fieldsMenu"></div>'
 });



var fieldMenu = new Ext.menu.Menu({
    id: 'fieldsRootMenu',
	minWidth:150
});

Ext.menu.DynamicItem = function(config){
    Ext.menu.DynamicItem.superclass.constructor.call(this, config);
    this.on("click",function(m,e){
    	fieldsEditor.setValue(m.fullText||m.text);
    });
};

Ext.extend(Ext.menu.DynamicItem, Ext.menu.Item, {
    // private
    expandMenu : function(autoActivate){
        if(!this.disabled && this.menu){
            clearTimeout(this.hideTimer);
            delete this.hideTimer;
            if(!this.menu.isVisible() && !this.showTimer){
            	
            	//如果有chldren属性并且还没有装载,那么装载之
				if(this.children && this.children.length>0 && this.menu.items.length == 0){
					for(var index=0;index<this.children.length;index++){
						var item = this.children[index];
						this.menu.add(new Ext.menu.DynamicItem({
							text:item.name,
							menu:item.children?{items:[]}:null,
							children:item.children,
							fullText:this.text + "_" + item.name,
							url:item.url
						}));
					}
				}
				
                this.showTimer = this.deferExpand.defer(this.showDelay, this, [autoActivate]);
            }else if (this.menu.isVisible() && autoActivate){
                this.menu.tryActivate(0, 1);
            }
        }
    }
});

for(var i = 0;i<dataFields.length;i++){
	var item = dataFields[i];
	fieldMenu.add(new Ext.menu.DynamicItem({
		text:item.name,
		menu:item.children?{items:[]}:null,
		children:item.children
	}));
}


fieldsEditor.on('expand',function(){ 
	fieldMenu.show(Ext.get("fieldsMenu"));
}); 

  </script>
 </HEAD>

 <BODY onload="fieldsEditor.render('fieldEditor')">
			<div id="fieldEditor"></div>
 </BODY>
</HTML>

  • 大小: 6.5 KB
  • 大小: 31.4 KB
分享到:
评论
1 楼 mandyyuan 2008-11-24  
会用ext啊,不错哇哦

相关推荐

    Ext_comBox模糊查询

    在EXT JS中,Combox(下拉框组件)是一种常用的输入控件,它结合了文本输入框和下拉列表的功能,常用于数据选择和输入。本文将深入探讨如何在EXT中实现Combox的模糊查询功能,以及后台处理自动检索的方法。 模糊...

    ext combox

    在探讨“ext combox”这一主题时,我们深入解析其核心功能——自动提示,这是现代Web应用程序中一个非常实用且常见的特性,尤其在输入框中提供动态搜索建议方面,极大地提升了用户体验。本篇将详细阐述如何利用Ext ...

    Ext+MVC(combox,tree,gird,layout)

    ext + mvc combox tree grid layout

    EXT中COMBOX联动

    在EXTJS中,可以使用`Ext.Ajax`或`Ext.data.Store`的`load`方法发送异步请求,获取与新选择相关的数据。 4. **Model(数据模型)**:数据模型定义了数据的结构和行为。在联动中,可能需要根据不同的COMBOBOX定义...

    Ext 将grid渲染到combox

    从 `ComboBox` 的源代码来看,如果未定义 `tpl` 属性,则会使用默认的 XTemplate 生成下拉菜单项,其中默认会显示 `displayField` 对应的数据字段。而通过自定义 `tpl` 属性,我们可以完全控制下拉菜单的展示形式。 ...

    extcombox搜索功能

    在ExtJS中,`Ext.form.field.ComboBox`(简称ComboBox)是一种常用的控件,它提供了一个下拉列表,用户可以在其中选择一个或多个项目。这个控件在数据展示和用户交互方面具有广泛的应用,特别是在需要进行快速筛选和...

    combox

    combox的栏数如何生成?

    WPF_MVVM中DataGrid列中使用ComBox绑定

    总结来说,WPF MVVM中在DataGrid列中使用ComBox绑定,需要理解DataGrid、DataTemplate、ComBox以及MVVM的双向绑定原理。通过定义ViewModel、设置DataGrid和ComBox的绑定属性,以及处理命令,我们可以实现用户在...

    实现combox二级

    本示例中的"实现combox二级联动"是指在一个ComboBox(下拉框)的选择改变时,根据这个选择更新另一个ComboBox的选项。 在Qt中,ComboBox是一种用于展示可选列表的控件,用户可以从下拉列表中选择一个条目。二级联动...

    Combox下拉多值

    源码通常是程序员为了实现特定功能而编写的计算机程序代码,这里提供的"Combox下拉多值"的源码可能是一个自定义控件,允许用户在下拉菜单中选择多个选项,并将这些选择存储为一个集合。这个源码可能是用某种编程语言...

    Ext 异步加载添加 删除节点 修改combobox选择项

    在Ext JS中,异步加载是一种常见的数据处理方式,尤其在构建动态的用户界面时非常有用。本篇文章主要探讨了如何在异步加载的场景下,实现树形控件(TreePanel)中节点的动态添加、删除以及ComboBox选择项的修改。 ...

    c#Winform Combox控件重绘

    在Winform应用中,Combox控件是一个常见的选择项列表组件,用于显示下拉菜单供用户选择。本文将详细探讨如何在VS2017环境下,针对.Net 2.0版本的Combox控件进行重绘操作。 首先,理解“重绘”(Redraw)的概念。在...

    重绘ComBox控件实现换行 当文本达到一定长度时实现换行

    在Windows编程中,ComBox(ComboBox)控件是一种常见的用户界面元素,用于提供下拉列表让用户选择。在某些情况下,当ComBox中的选项文本较长时,可能会超出控件的宽度,导致显示不全,影响用户体验。为了解决这个...

    delphi控件ComboxGrid

    ComboxGrid是一款在Delphi开发环境中使用的自定义控件,它是Combobox(下拉框)和Grid(表格)功能的结合体,为用户提供更丰富的数据选择和显示方式。在Delphi编程中,ComboxGrid控件可以极大地提高用户体验,因为它...

    combox 列表嵌套checkbox

    标题“combox 列表嵌套checkbox”指的是在下拉组合框(ComboBox)中集成复选框(Checkbox)功能,使得用户可以在下拉列表中进行多项选择。这种设计通常用于提供一种灵活的多选方式,特别是在选项众多且需要用户快速...

    Extjs之旅-combox之远程加载数据

    这个文件可能是数据库脚本,用于创建与Combox相关的数据表,但具体如何使用,取决于你的数据库管理和应用架构。 综上所述,理解并熟练运用ExtJS的Combox远程加载数据功能,能有效提升Web应用的性能和用户体验。在...

    VBCombox实现下拉

    例如,可以使用Timer控件来实现延迟下拉,避免每次按键都触发下拉: ```vb Private WithEvents tmrAutoDrop As Timer Private Sub Form_Load() tmrAutoDrop = New Timer tmrAutoDrop.Interval = 500 ' 设置延迟...

    VC中ComBox控件的使用

    VC中ComBox控件的详细使用,包括添加、删除、选择、提取ComBox的内容等等

    combox 实现搜寻功能

    ### combox实现搜寻功能详解 在Java编程中,`JComboBox`是Swing库中的一个组件,用于创建下拉列表或组合框。它能够显示一个可编辑的文本字段和一个下拉列表,用户可以在其中选择一个选项或者手动输入文本。`...

    combox下拉树combox下拉树

    在IT行业中,`Combox`(组合框)是一种常见的用户界面元素,它结合了文本输入框和下拉列表的功能,通常用于提供用户选择一个或多个预定义的选项。当需要在下拉列表中呈现层级结构时,我们就会涉及到“Combox下拉树”...

Global site tag (gtag.js) - Google Analytics