`
tom&jerry
  • 浏览: 66153 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

extjs的EditorGridPanel中的ComboBox列中显示值的问题

阅读更多
在项目中使用了extjs的editorgridpanel,但是其中的combobox在选择了相应的选项后,grid中显示的是值域(valueField)的值,而非意愿中的显示域(displayField)的值,经过一些搜索和尝试后找到了一个比较好的解决方法——在定义带combobox的列时配置其renderer的属性。
var assistItemStore = new Ext.data.JsonStore({
								url:'assist.do',
								baseParams:{
									m : 'listAllLike',
									shopid: shopid ,
									subid: subid
								},
								root:'items',
								fields:[{
									name:'aux_name',
									mapping:'assistName'
								},{
									name:'aux_id',
									mapping:'assistid'
								}]
							});



{
						header :'项目名称',
						width :100,
						dataIndex :'aux_id',
						editor : new Ext.form.ComboBox({
							autoLoad:true,
							triggerAction : 'all',
							selectOnFocus : true,
							allowBlank : true,
							editable: true,
							displayField:'aux_name',
							valueField:'aux_id',
							minChars:1,
							queryParam:'subname',
							typeAhead: true,
							store: assistItemStore
						}),
						renderer: function(value,metadata,record){
							var index = assistItemStore.find('aux_id',value);
							if(index!=-1){
								return assistItemStore.getAt(index).data.aux_name;
							}
							return value;
						}


这样写之后,选择之后grid中显示了displayField的值,但最初从数据库提取的值仍然显示valueField的值,原因是store的数据是远程取得的,在grid最初的render中还无法从store中查到相对应的displayField的值,于是打算用ajax异步取得displayField的值,但是异步的线程不造成阻塞,无法保证返回值之前能取得相应的数据.后来想出另一个方法,为grid增加一个隐藏列,存放对应的值,在最初提取数据时能够从中获取要显示的值.
{
						header:'',
						width:10,
						dataIndex:'aux_name',
						hidden:true
					}, {
						header :'项目名称',
						width :100,
						dataIndex :'aux_id',
						editor : new Ext.form.ComboBox({
							autoLoad:true,
							triggerAction : 'all',
							selectOnFocus : true,
							allowBlank : true,
							editable: true,
							displayField:'aux_name',
							valueField:'aux_id',
							minChars:1,
							queryParam:'subname',
							typeAhead: true,
							store: assistItemStore
						}),
						renderer: function(value,metadata,record){
							var index = assistItemStore.find('aux_id',value);
							if(index!=-1){
								return assistItemStore.getAt(index).data.aux_name;
							}
							return record.get('aux_name');
						}



总感觉这个编辑框太小了,用着很不舒服,希望改进.
分享到:
评论
3 楼 xay0326 2012-10-16  
我的问题解决了,谢谢!
2 楼 sysme 2011-08-15  
另,关于初始显示名称的问题,只要把store的autoLoad设置为true就没问题。
1 楼 sysme 2011-08-15  
好贴啊 我也正遇到此问题

相关推荐

    Extjs EditorGridPanel中ComboBox列的显示问题

    在EXTJS中,EditorGridPanel是一种可编辑的表格组件,它允许用户直接在表格单元格内编辑数据。然而,当在EditorGridPanel中嵌入ComboBox(下拉...这不仅解决了ComboBox显示问题,也为用户提供了一个更直观的编辑体验。

    ExtJS下拉列表树控件

    对于ExtJS EditorGridPanel中ComboBox列的显示问题,可能是因为数据没有正确绑定或格式化问题,确保`store`已加载数据,并且在`renderer`函数中正确显示数据。 至于回显问题,即在编辑时显示已有的数据,需要确保在...

    extjs中grid中嵌入动态combobox的应用

    在EXTJS应用中,将动态Combobox嵌入Grid可以提供丰富的交互体验,用户可以在Grid的单元格中直接选择下拉列表中的值,同时,通过自定义的renderer函数确保数据显示的正确性。这种做法在数据管理界面中非常常见,特别...

    ExtJs组件类的对应表

    11. **`editorgrid`** - `Ext.grid.EditorGridPanel`,可编辑的表格组件,允许用户直接在表格中编辑数据。 12. **`propertygrid`** - `Ext.grid.PropertyGrid`,属性表格组件,用于展示对象的属性。 13. **`...

    extjs的快速入门教程

    - **Panel**: 是ExtJS中最常见的容器,可以容纳其他组件。 - 支持自定义标题、边框样式等。 2. **工具栏(Toolbar)**: - 用于放置按钮、文本框等控件,常用于页面顶部或底部。 3. **选项面板(TabPanel)**: - 实现...

    extJs xtype 类型

    11. **`editorgrid`:** 可编辑的表格组件,允许用户直接在表格中编辑数据,通过`Ext.grid.EditorGridPanel`类实现。 12. **`propertygrid`:** 属性表格组件,用于展示对象的属性列表,通过`Ext.grid.PropertyGrid`...

    ExtJs xtype一览

    在ExtJs框架中,`xtype`是用于定义组件类型的扩展类型。这是一种简化的组件标识方式,使得开发者可以更方便地在配置文件或代码中指定组件类型,而无需完整地写出对应的类名。下面,我们将根据提供的内容对ExtJs中的...

    Extjs xtype集合

    本文档将详细介绍Extjs中包含的所有`xtype`值,并解释它们的功能和用途。 #### 二、基本组件 1. **`button`:** - **`xtype`**: `button` - **`Class`**: `Ext.Button` - **描述**: 一个简单的按钮组件,常用于...

    ExtJS基础教程.pdf

    4. **表格类**:包括网格面板(GridPanel)、编辑网格面板(EditorGridPanel)、属性网格(PropertyGrid)、视图(View)、分组视图(GroupingView)、列模型(ColumnModel)和选择模型(SelectionModel),支持复杂的数据展示和...

    EXTJS 学习笔片段1

    EXTJS 学习笔片段1 Form ComboBox 远程ComboBox 替代页面上已经存在的Select控件 Grid EditorGridPanel 使用本地store Toolbar工具菜单创建 分页工具栏创建 Window 弹出处理window窗口(模态窗口) ...

    Extjs实用教程

    - **EditorGridPanel**: `Ext.grid.EditorGridPanel`,可编辑的表格组件。 - **GridPanel**: `Ext.grid.GridPanel`,表格组件。 - **PagingToolbar**: `Ext.PagingToolbar`,分页工具栏。 - **Panel**: `Ext....

    ExtJS入门教程(超级详细)

    1、Ext类 ………………………………… 2 2、Array类 …………………………… 4 3、Number类 …………………………… 4 4、...73、Ext.grid.EditorGridPanel类 ……… 62 74、Ext.grid.PropertyGrid类 …………… 65

    extjs控件列表

    ### ExtJS控件详解 #### 基本组件 **Ext.Button** - **描述**: 提供了一种标准的用户交互方式,...以上是ExtJS框架中常用的控件及其用途,通过合理运用这些控件,开发者可以构建功能丰富、交互流畅的Web应用界面。

    学习ExtJS Panel常用方法

    - 描述:xtypeClass 并不是 ExtJS 的官方属性名,这里列出了一些常见的 xtype 和对应的类名称,方便理解。 - 示例列表: - `box`: `Ext.BoxComponent` - `button`: `Ext.Button` - `buttongroup`: `Ext....

    ext学习之路

    在页面完全加载后,通常会调用`Ext.onReady`函数,确保ExtJS在DOM完全就绪后执行,避免了元素未加载完成的问题。 #### 组件库详解 ExtJS的核心优势在于其丰富的组件库,几乎涵盖了Web应用开发的所有需求: - **...

    Ext组件描述,各个组件含义

    - **功能描述**:ComboBox 是一个下拉列表框,用户可以从列表中选择一个值。 - **主要用途**:适用于需要用户从预定义的选项中选择的场景。 **2.19 Date Field (Ext.form.DateField)** - **xtype**: `datefield` -...

Global site tag (gtag.js) - Google Analytics