http://weijun8611-126-com.iteye.com/blog/566201

在项目中使用了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');
}

  

下面记录一个树结构的表格处理方式

sortable: false,
text : '部位',
dataIndex : 'buweiid',
width: 150,
editor : combo,
renderer: function(value,metadata,record) {
if(combo.store.data.indexOfKey(value) != -1) {
return combo.store.data.get(value).raw.text;
}
return record.raw.buweitext;
}

  

Ext.define('APP.view.Trainbom.TreeGridList', {
extend : 'Ext.tree.Panel',
xtype : 'Trainbom_TreeGridList', columnLines : true, initComponent : function() {
var me = this; me.plugins = [ me.cellEditingPlugin = Ext.create('Ext.grid.plugin.CellEditing') ];
var combo = Ext.create('APP.lib.DictionaryCombo', {
name: 'buweiid',
code: 'CODE_BUWEI'
}); Ext.apply(me, {
store : 'TrainbomStore',
viewConfig: {
plugins: {
ptype: 'treeviewdragdrop',
containerScroll: true
}
},
columns : [ {
xtype : 'treecolumn',
sortable: false,
text : '机车类型',
dataIndex : 'traintype',
width: 150,
editor : {
xtype: 'NormalCombo',
name: 'traintype',
url: 'SysDictionaryController.do?method=selectListTrain',
selectOnFocus : true,
allowOnlyWhitespace : false
}
},{
sortable: false,
text : '12位编码',
dataIndex : 'materialcode',
width: 150,
editor : 'textfield'
},{
sortable: false,
text : '父编码',
dataIndex : 'parentmaterialcode',
width: 150,
editor : 'textfield'
},{
sortable: false,
text : '部件数量',
dataIndex : 'fullcount',
width: 100,
editor : 'numberfield'
},{
sortable: false,
text : '安装数量',
dataIndex : 'installcount',
width: 100,
editor : 'numberfield'
},{
sortable: false,
text : '部位',
dataIndex : 'buweiid',
width: 150,
editor : combo,
renderer: function(value,metadata,record) {
if(combo.store.data.indexOfKey(value) != -1) {
return combo.store.data.get(value).raw.text;
}
return record.raw.buweitext;
}
}]
}); me.callParent(arguments);
me.relayEvents(me.getStore(), ['load'], 'store');
me.on('beforeedit', me.handleBeforeEdit, me);
}, getSelecedRecordId : function() {
var record = this.getSelectionModel().getSelection()[0];
return record ? record.getId() : '';
}, getSelecedRecord : function() {
var record = this.getSelectionModel().getSelection()[0];
return record;
}, handleBeforeEdit : function(editingPlugin, e) {
if(e.record.get('id') == 'root') {
Ext.popup.Msg('提示信息', '字典跟节点不允许编辑');
return false;
}
return true;
}, refreshView: function() {
//this.getView().refresh(); //本地刷新
var tree = this;
//tree.setLoading(true, tree.body); //服务器端刷新
this.getStore().reload({mask:true});
}
});

Extjs GridPanel 中放入 Combox显示问题的更多相关文章

  1. Javascript - ExtJs - GridPanel组件

    GridPanel组件(Ext.grid.GridPanel)logogram:Ext.grid.Panel | xtype:gridpanel 此类派生自Ext.Panel,创建表格需要两个必须的对 ...

  2. Extjs GridPanel用法详解

    Extjs GridPanel 提供了非常强大数据表格功能,在GridPanel可以展示数据列表,可以对数据列表进行选择.编辑等.在之前的Extjs MVC开发模式详解中,我们已经使用到了GridPa ...

  3. Server:www121 Server:www120 Server:NWS_SP 内容被散列,并在响应中放入Etag When to Use Entity-Tags and Last-Modified Dates

    1 Request URL:http://www.biyao.com/minisite/bzzx 2 Request Method:GET 3 Status Code:200 OK 4 Remote ...

  4. 在li元素中放入img图片时li的高度问题

    在li元素中放入img图片时li的高度会比img图片的高度多出几个像素,解决这个问题只需要将img元素的css设置成vertical-align: middle;就可以解决.

  5. extjs gridpanel 操作行 得到选中行

    extjs gridpanel 操作行 得到选中行的列 在Extjs 3.2.0上适合 var model = grid.getSelectionModel(); model.selectAll(); ...

  6. Eclipse的workspace中放入Ext JS卡死或OOM的解决方案

    Eclipse的workspace中放入Ext JS卡死或OOM的解决方案 原因:是由于Ext JS 的所有的文件js验证 方法一:关于Eclipse解决Ext JS卡死方案: 打开Eclipse的w ...

  7. 基本操作——word中怎样同一页中放入多张图片

    可能很多人在放图片时候,碰见这种情况,习惯性的把图片拖进word,发现不能在一页上很工整的排列.很多人包括我刚开始也纳闷,怎么不能一页中放入几张图片呢,缩放也不想.下面分享一个小技巧给有缘人 以我的w ...

  8. C语言:根据形参c中指定的英文字母,按顺序打印出若干后继相邻字母,-主函数中放入一个带头节点的链表结构中,h指向链表的头节点。fun函数找出学生的最高分-使用插入排序法对字符串中的字符进行升序排序。-从文件中找到指定学号的学生数据,读入次学生数据,

    //根据形参c中指定的英文字母,按顺序打印出若干后继相邻字母,输出字母的大小与形参c一致,数量由形参d指定.例如:输入c为Y,d为4,则输出ZABC. #include <stdio.h> ...

  9. G4Studio+extjs+highcharts 下在ext4j的panel中放入hightCharts图表

    在G4Studio+extjs下.创建一个panel,然后将highCharts图表放入panel中.实现方法例如以下: 首先简单给出的部分代码: Ext.onReady(function() { v ...

随机推荐

  1. (转)Behavior Tree实践

    http://www.cnblogs.com/mavaL/archive/2013/04/07/3001860.html

  2. Python+Django+SAE系列教程13-----MySQL记录的添\删\改

    建立了数据库后,我们就来做一个简单的表(person_classroom)的加入.删除.改动的操作. 首先我们建立一个加入的页面的模板Classroom_Add.html(加入的表单)并把它放在Bid ...

  3. [AngularJS] Angular 1.3 Anuglar hint

    Read More: http://www.linkplugapp.com/a/953215 https://docs.google.com/document/d/1XXMvReO8-Awi1EZXA ...

  4. 用C#读取图片的EXIF信息的方法

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Dr ...

  5. SQL Server 性能调优(方法论)【转】

    目录 确定思路 wait event的基本troubleshooting 虚拟文件信息(virtual file Statistics) 性能指标 执行计划缓冲的使用 总结 性能调优很难有一个固定的理 ...

  6. Quercus-基于 Java 的 PHP 框架

    Quercus是Caucho公司采用纯Java开发的一个PHP5引擎.基于开源授权协议GPL发布.Quercus自带很多个PHP模块和扩展如 PDF,PDO,MySQL和JSON.可以利用这个引擎在一 ...

  7. HTML-IE6兼容性问题及IE6常见BUG详细汇总

    点评:IE6的兼容性问题一直都是前端工程师的恶梦,为了早早脱离这种困境,本文整理了一些相关兼容性的知识,感兴趣的朋友可以参考下哈,希望可以帮助到你- 1.终极方法:条件注释 <!--[if lt ...

  8. C#:DataGridView控件操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  9. 摘:C++日期时间与字符串间的转换

    VC6中 CString sTime = _T("2007-10-26 13:20:30"); char *charTime = (LPSTR)(LPCTSTR)sTime; CS ...

  10. bzoj-4003 城池攻占

    题意: 给出一个n个结点的有根树,和m个骑士: 树上的结点--城池有一个防御值,骑士有一个战斗力: 当骑士的战斗力大于等于城池时,城池被攻破.骑士的战斗力变化,并向树上的父节点前进: 否则骑士死亡. ...