`

扩展combobox的下拉Grid

EXT 
阅读更多
/**
 * 下拉ComboBoxGrid
 * 
 * @xtype 'combogrid'
 * @author chengbao_zhu
 */


ComboBoxGrid = Ext.extend(Ext.form.ComboBox, {

	gridHeight : 180,
	listAlign : 'tr-br',
	listWidth : 300,
	store : new Ext.data.SimpleStore({
		fields : [],
		data : [[]]
	}),
	resizable : false,
	// Default
	editable : false, 
	mode : 'local',
	triggerAction : 'all',
	maxHeight : 500,
	selectedClass : '',
	onSelect : Ext.emptyFn,
	emptyText : '\u8bf7\u9009\u62e9...',


	/**
	 * ---------------------------------- 
	 * 单击GRID事件
	 * ----------------------------------
	 */
	gridClk : function(grid, rowIndex, e) {
		
		this.setRawValue(grid.getRecord(rowIndex).data[this.displayField]);
		this.setValue(grid.getRecord(rowIndex).data[this.valueField]);
		this.collapse();

		 this.fireEvent('gridselected', grid.getRecord(rowIndex));

	},

	initLayout : function(){
		this.grid.autoScroll = true;
		this.grid.height = this.gridHeight;
		this.grid.containerScroll = false;
		this.grid.border=false;
		
		this.listWidth = this.grid.width+3;
	},
	/**
	 * Init
	 */
	initComponent : function() {
		ComboBoxGrid.superclass.initComponent.call(this);
		this.initLayout();
		this.tplId = Ext.id();
		// overflow:auto"
		this.tpl = '<div id="' + this.tplId + '" style="height:' + this.gridHeight
				+ ';overflow:hidden;"></div>';
		
		//Add Event
		 this.addEvents('gridselected');
	},

	/**
	 * ------------------ 
	 *  Listener 
	 * ------------------
	 */
	listeners : {
		'expand' : {
			fn : function() {
				if (!this.grid.rendered && this.tplId) {
					//this.initComponent();
					this.initLayout();
					
					this.grid.render(this.tplId);
					this.store = this.grid.store;
					
					this.store.reload();
					if(this.store.getCount()==0){
						this.store.add(new Ext.data.Record([{}]));	
					}
					//this.grid.store.reload();
					this.grid.on('rowclick', this.gridClk, this);
				}
				
				this.grid.show();
			}
			//single : true
		},

		'render' : {
			fn : function() {
				 
			}
		},
		'beforedestroy' : {
			fn : function(cmp) {
				this.purgeListeners();
				this.grid.purgeListeners();
			}
		},
		'collapse' : {
			fn : function(cmp) {
				/**
				 *  防止当store的记录为0时不出现下拉的状况
				 */
				if(this.grid.store.getCount()==0){
					this.store.add(new Ext.data.Record([{}]));
				}
			}
		}
	}

});

/**
 * --------------------------------- 
 * register:'combotree' 
 * ---------------------------------
 */
Ext.reg('combogrid', ComboBoxGrid);

分享到:
评论

相关推荐

    unigui自定义下拉combobox

    自定义下拉Combobox是在标准Combobox基础上扩展的组件,通常用于提供一个可下拉的选项列表供用户选择。在Unigui的自定义版本中,它增加了更多的特性,如分页、关键字搜索和多选功能,这使得用户在处理大量数据时...

    delphi写ComboBox下拉DBGrid第三方控件的例子

    本篇文章将深入探讨如何使用第三方控件实现ComboBox下拉DBGrid的功能。 首先,ComboBox是Delphi中一个常见的控件,它通常用于显示一个文本列表供用户选择。然而,原生的ComboBox控件仅支持简单的文本列表,不适用于...

    Ext ComboboxGrid

    在Ext JS中,ComboBox通常用于显示一个可选的下拉列表,而Grid则用于展示大量数据并进行编辑和操作。ComboboxGrid将这两者融合,使得用户可以在输入框中输入关键字搜索,同时下拉展示匹配的网格数据,便于多维度筛选...

    PropertyGrid 下拉式和弹出编辑框的实现

    在这个主题中,我们将深入探讨如何实现`PropertyGrid`控件中的下拉式和弹出编辑框。 首先,`PropertyGrid`控件本身并不直接支持自定义的编辑器,但它允许我们通过实现`ITypeDescriptorContext`、`...

    FineUIgrid下拉grid

    3. **下拉grid扩展实例**:这个描述可能指的是在Grid的某个列中使用下拉列表,并且该列表本身也是一个Grid,这样的设计允许用户从大量的关联数据中进行选择。下拉grid可以实现联动选择,例如,当选择一个主类别的...

    自动改变宽度的ComboBox

    ComboBox作为一种常用的组合输入控件,结合了文本框和下拉列表的功能,用户可以输入文本,也可以从下拉列表中选择。 在Windows Forms、WPF、WinUI或.NET Maui等平台中,ComboBox通常用于展示一系列可选项,但默认...

    Delphi为StringGrid控件增加Combobox下拉框.rar

    Delphi为StringGrid网格显示控件中增加下拉框功能,也就是在Grid控件中添加Combobox下拉列表的功能,在任意列显示一个ComboBox功能,如演示截图所示,可大大扩展Grid的功能。生成列表:  with Sender as TComboBox ...

    elementUI_treeTable_comboxGrid.benson.2019.05.131041.rar

    在这个名为"elementUI_treeTable_comboxGrid.benson.2019.05.131041.rar"的压缩包中,我们看到的是一个利用Element UI实现的特殊应用场景:表格树(Tree Table)和下拉表格(Combobox Grid)。 首先,让我们深入...

    Delphi7StringGrid内动态添加ComBoBox的值

    本篇文章将详细讲解如何在Delphi 7的StringGrid中动态地添加ComboBox控件,并为Grid赋值。 首先,我们需要理解StringGrid的基本结构。StringGrid是TStringGrid组件,它是VCL(Visual Component Library)的一部分,...

    显示多列的combobox

    这种扩展的ComboBox通常用于显示复杂的数据结构,例如数据库中的表格记录。 在传统的ComboBox中,我们只能看到单一列的数据,通常是键值或文本。然而,当需要显示如ID、名称、价格等多列信息时,就需要对其进行定制...

    Extjs6 下拉列表

    综上所述,ExtJS6的下拉列表(ComboBox)和GridCombo扩展控件提供了强大的功能和灵活性,它们可以用于创建丰富的用户界面,满足各种复杂的业务需求。理解和熟练掌握这些组件的使用,对于开发高质量的Web应用至关重要...

    combobox重绘

    实现这种功能,你需要扩展ComboBox类,添加额外的逻辑来处理多列数据的显示,并确保在重绘时正确地布局和渲染这些列。 在.NET Framework或WPF环境中,你可以继承ComboBox控件并覆写OnRender方法,利用System....

    flex datagrid 中实现combobox联动

    在Flex编程中,数据网格(DataGrid)是用于展示大量结构化数据的组件,而ComboBox是一种下拉选择框,常用于提供用户可选择的选项。当我们需要在DataGrid的不同列中实现ComboBox的联动效果时,即在一个ComboBox的选择...

    delphi控件ComboxGrid

    在Delphi编程中,ComboxGrid控件可以极大地提高用户体验,因为它允许用户在下拉列表中不仅可以看到简单的文本选项,还可以查看多列数据,比如ID、名称、日期等信息。 PasComboxGrid.pas文件是ComboxGrid控件的源...

    Combobox样式

    在Windows Presentation Foundation (WPF) 中,`ComboBox` 是一个常用的控件,它结合了下拉列表和文本框的功能,用户可以输入文本或者从预定义的列表中选择一个选项。本篇文章将深入探讨 `ComboBox` 的样式及其在 ...

    Extjs4 combogrid扩展

    描述中提到的“对combo进行扩展,支持grid显示”,意味着我们将在 Combo 的下拉部分嵌入一个 Grid,这样用户在选择时就能看到多个属性的详细信息,而不仅仅是单一的文本标签。这通常涉及到自定义渲染和监听事件,...

    python tkinter之 复选、文本、下拉的实现

    numberChosen = ttk.Combobox(win, width=12, textvariable=number, state='readonly') numberChosen['values'] = (1, 2, 4, 42, 100) numberChosen.grid(column=1, row=1) numberChosen.current(4) # 设置默认选中...

    Ext自定义Grid Cell插件

    在实际开发中,我们有时需要在Grid的单元格(Cell)中添加更丰富的交互元素,例如输入框、下拉选择器等,这时就涉及到了`Ext Grid CellEdit`的概念。`CellEdit`允许我们在单个单元格中进行编辑,而不是整个行,提高...

    动态设定PropertyGrid 属性源码

    本项目“动态设定PropertyGrid属性源码”显然是针对C#编程语言的一个实现,通过扩展`PropertyGrid`的功能,使其能动态地设定属性类型,包括`String`、`ComboBox`、`DateTime`、`int`以及自定义窗口。这样的设计提高...

    具有可选选项的输入文本框(ComboBox)

    在网页设计和开发中,创建交互式的用户界面是至关重要的,而`ComboBox`(组合框或下拉文本框)就是实现这一目标的关键组件之一。它结合了文本输入框和下拉选择列表的功能,允许用户既可以手动输入数据,也可以从预...

Global site tag (gtag.js) - Google Analytics