Extjs GridPanel 中放入 Combox显示问题
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显示问题的更多相关文章
- Javascript - ExtJs - GridPanel组件
GridPanel组件(Ext.grid.GridPanel)logogram:Ext.grid.Panel | xtype:gridpanel 此类派生自Ext.Panel,创建表格需要两个必须的对 ...
- Extjs GridPanel用法详解
Extjs GridPanel 提供了非常强大数据表格功能,在GridPanel可以展示数据列表,可以对数据列表进行选择.编辑等.在之前的Extjs MVC开发模式详解中,我们已经使用到了GridPa ...
- 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 ...
- 在li元素中放入img图片时li的高度问题
在li元素中放入img图片时li的高度会比img图片的高度多出几个像素,解决这个问题只需要将img元素的css设置成vertical-align: middle;就可以解决.
- extjs gridpanel 操作行 得到选中行
extjs gridpanel 操作行 得到选中行的列 在Extjs 3.2.0上适合 var model = grid.getSelectionModel(); model.selectAll(); ...
- Eclipse的workspace中放入Ext JS卡死或OOM的解决方案
Eclipse的workspace中放入Ext JS卡死或OOM的解决方案 原因:是由于Ext JS 的所有的文件js验证 方法一:关于Eclipse解决Ext JS卡死方案: 打开Eclipse的w ...
- 基本操作——word中怎样同一页中放入多张图片
可能很多人在放图片时候,碰见这种情况,习惯性的把图片拖进word,发现不能在一页上很工整的排列.很多人包括我刚开始也纳闷,怎么不能一页中放入几张图片呢,缩放也不想.下面分享一个小技巧给有缘人 以我的w ...
- C语言:根据形参c中指定的英文字母,按顺序打印出若干后继相邻字母,-主函数中放入一个带头节点的链表结构中,h指向链表的头节点。fun函数找出学生的最高分-使用插入排序法对字符串中的字符进行升序排序。-从文件中找到指定学号的学生数据,读入次学生数据,
//根据形参c中指定的英文字母,按顺序打印出若干后继相邻字母,输出字母的大小与形参c一致,数量由形参d指定.例如:输入c为Y,d为4,则输出ZABC. #include <stdio.h> ...
- G4Studio+extjs+highcharts 下在ext4j的panel中放入hightCharts图表
在G4Studio+extjs下.创建一个panel,然后将highCharts图表放入panel中.实现方法例如以下: 首先简单给出的部分代码: Ext.onReady(function() { v ...
随机推荐
- [IDEA]IntelliJ IDEA 报 This license BIG3CLIK6F has been cancelled 错误
JetBrains 最近封杀了lanyus提供的序列号,用的人多了,自然会引起JetBrains的注意. 在激活时,会先在本地做一次验证,然后会把注册码发送到JetBrains的账号服务器上accou ...
- 基于Struts2、Spring、Hibernate实现的包括多条件查询分页的基础Dao层帮助jar包实现
操作数据库经常使用操作就是增删查改.每做一次就写一次这些操作太麻烦,也不是必需,特别是写多条件查询并分页时.太痛苦了,所以抽出时间写了个dao帮助jar.导入即搞定!妈妈再有不用操心我的项目了! 转载 ...
- 工具篇:使用natapp工具映射内网到外网访问
一.环境说明 开发基于微信公众号的应用最大的痛苦之处就是调试问题,每次实现一个功能后都需要部署到一个公网服务器进行测试,因为微信用户每次向公众号发起请求时,微信服务器会先接收到用户的请求,然后再转发到 ...
- Androidclient性能參数监控
背景: 在做androidclient測试的时候.有时候须要监控cpu/mem/电量消耗/界面载入时间/流量等等指标. 于是俺们就上下求索,网友告诉我两个方案:AnotherMonitor和Emmag ...
- com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "ExceptionId"
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "Exception ...
- C/S 中当服务器进程崩溃的时候 SIGPIPE
程序还是https://github.com/juniperdiego/Unix-network-programming-of-mine/tree/master/tcpserv02 参考unix网络编 ...
- 按钮CSS样式
CreateTime--2017年5月5日11:23:18Author:Marydon 按钮CSS样式 实现效果: <input type="button" onclic ...
- servlet request getQueryString 汉字的URI编码如何转码
JavaScript中编码有三种方法:escape.encodeURI.encodeURIComponent,地址栏中那些%XX就是汉字对应的字节被encodeURI编码格式转了.一个字节对应一个% ...
- Cookie的介绍
Cookie是某些站点为了辨别用户身份而存在用户本地终端上的数据.Cookie总是保存在client中,可分为内存 Cookie和硬盘Cookie,而依照时间划分.又能够分为非持久Cookie和持久C ...
- 【laravel54】composer install与composer update的区别
1.基础概念: 我们需要明白laravel项目里面有2个配置文件,composer.json和composer.lock文件,前者是下载的依赖包配置文件,后者是锁定的包版本信息. 使用之前,需要cd ...