Extjs EditorGridPanel中ComboBox列的显示问题

为了解决这个问题需要在EditorGridPanel的ColumnModel中显示ComboBox的地方使用renderer属性,重新渲染,方法如下:


代码如下:

//部门列表
var comboxDepartmentStore = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: "GetDepartmentJson.aspx",
method: 'GET'
}),
reader: new Ext.data.JsonReader({
root: 'data',
totalProperty: 'totalCount',
fields: [
{ name: 'departmentid', mapping: 'ID' },
{ name: 'departmentname', mapping: 'Name' }
]

})
});
//根据Combobox列表中对应的Id的值来渲染
function rendererMeterTypeCombobox(value, p, r) {
var index = comboxDepartmentStore.find(Ext.getCmp('cbdepartment').valueField, value);
var record = comboxDepartmentStore.getAt(index);
var displayText = "";
if (record == null) {
return value;
} else {
return record.data.astype; // 获取record中的数据集中的display字段的值
}
}

var sm = new Ext.grid.CheckboxSelectionModel();

var cm = new Ext.grid.ColumnModel({
columns: [sm, new Ext.grid.RowNumberer(), {
header: 'id',
dataIndex: 'id',
hidden: true
}, {
header: '姓名',
width: 40,
dataIndex: 'name'
}, {
header: '所属部门',
width: 80,
dataIndex: 'department',
renderer: rendererDepartmentCombobox,
editor: new Ext.form.ComboBox({
id: "cbdepartment", //必须有
forceSelection: true,
selectOnFocus: true,
typeAhead: true,
triggerAction: 'all',
store: comboxDepartmentStore,
mode: 'local',
displayField: 'departmentname',
valueField: 'departmentid',
lazyRender: true
})
}],
defaults: {
zsortable: true,
menuDisabled: false,
width: 100
}
});

var editGrid = new Ext.grid.EditorGridPanel({
id: 'TestGrid',
store: store, //EditorGridPanel使用的store
trackMouseOver: true,
disableSelection: false,
clicksToEdit: 1, //设置点击几次才可编辑
loadMask: true,
autoHeight: true,
cm: cm,
sm: sm,
viewConfig: {
columnsText: '显示/隐藏列',
sortAscText: '正序排列',
sortDescText: '倒序排列',
forceFit: true,
enableRowBody: true
},
bbar: new Ext.PagingToolbar({
pageSize: 25,
store: store,
displayInfo: true,
displayMsg: '当前显示从{0}至{1}, 共{2}条记录',
emptyMsg: "当前没有记录"
})
});

(0)

相关推荐

  • extjs3 combobox取value和text案例详解

    使用combobox时,它有一个hiddenName的属性,专门用于提交combobox中value的值. 现假设某combobox的Id为comboId,hiddenName属性的值为hiddenValue, 那么,使用Ext.get('comboId').dom.value方法获取的是combobox中选中项的文本text值, 而使用Ext.get('hiddenValue').dom.value获取的才是combobox中需要提交的value的值. Ext.getCmp("ID值"

  • Extjs中ComboBoxTree实现的下拉框树效果(自写)

    最近涉及到的一个项目中,需要实现ComboBoxTree的效果,首先,看看效果吧--  在Extjs中是没有这种效果的,所以得自己写,在网络上看了看别人的资料,自己再总结了一下,修改了一下,代码如下: 复制代码 代码如下: Ext.ux.TreeCombo = Ext.extend(Ext.form.ComboBox, { constructor: function (cfg) { cfg = cfg || {}; Ext.ux.TreeCombo.superclass.constructor.

  • ExtJS PropertyGrid中使用Combobox选择值问题

    问题描述: 在PropertyGrid中使用Combobox来选择值时,得到的应该是displayField的值,但是在确认选择的时候却显示了valueField的值,例如,下拉选择性别,displayField分别为'男','女',对应的valueField分别为'0','1',本来选择应该显示中文描述,但是却显示成了0或者1这样的标识数据,这对用户来说应该不能接受的. 解决: 拦截Grid的beforepropertychange事件,设置好显示的值,之后返回false,阻止修改事件中的验证

  • Extjs4.0 ComboBox如何实现三级联动

    很多网友在问,Extjs4.0 ComboBox如何实现,好在之前用3.x实现过一个三级联动,如今用Extjs4.0来实现同样的联动效果.其中注意的一点就是,3.x中的model:'local'在Extjs4.0中用queryMode: 'local'来表示,而且在3.x中Load数据时用reload,但是在extjs4.0中要使用load来获取数据.如下图: 代码部分 先看HTML代码: <html > <head> <meta http-equiv="Conte

  • ExtJS4给Combobox设置列表中的默认值示例

    这个是model 复制代码 代码如下: Ext.regModel('commemModel', { fields : [ 'name', 'id' ] }); 定义一个store设置id为s1的容器的默认值是 第一季度 复制代码 代码如下: var gjcx1 = new Ext.data.Store({ autoLoad:true, model : commemModel, proxy : { type : 'ajax', url : '../store/cxjd.json' }, liste

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

    拿combobox的数据 复制代码 代码如下: comboDS = new Ext.data.JsonStore({ url : 'test.do', fields : [{ name : 'id' }, { name : 'display' }] }); combobox定义 combobox 中的id必须要有,后面要跟据id取combobox值. 复制代码 代码如下: var comboBox = new Ext.form.ComboBox({ id : "cb", //必须有 t

  • ExtJs使用总结(非常详细)

    一.获取元素(Getting Elements) 1.Ext.get var el = Ext.get('myElementId');//获取元素,等同于document.getElementById('myElementId');//会缓存 2. Ext.fly var el = Ext.fly('myElementId')//不需要缓存. 注:享元模式(Flyweight Design Pattern)是一种节省内存的模式,该模式的大概原理是建立单个全体对象然后不断反复使用它. 3.Ext.

  • Extjs中ComboBox加载并赋初值的实现方法

    如: 复制代码 代码如下: editCityStore.load({ params: { provinceID: proid }); Ext.getCmp('city-id-name').setValue(cityid); 由于是store是异步加载的,所以他会先赋值再填充值到ComboBox,,这里就需要用: 当加载完成后再进行赋值 : 复制代码 代码如下: editCityStore.load({ params: { provinceID: proid }, callback: functi

  • ExtJS 学习专题(一) 如何应用ExtJS(附实例)

    要使用ExtJS,先要得到ExtJS库文件,ExtJS库文件可以到ExtJS官网下载,地址是www.extjs.com/products/gxt/download.php,把下载得到的ZIP压缩文件解压缩到[D:\ExtCode]目录下,可以得到以下内容. adapter:负责将里面提供第三方底层库(包括Ext自带的底层库)映射为Ext所支持的底层库.  build:  压缩后的ext全部源码(里面分类存放).   docs:  API帮助文档.  exmaples:提供使用ExtJs技术做出的

  • Extjs让combobox写起来简洁又漂亮

    也已经写了很久时间的extjs ,每次都用到很多的combobox,配置很多东西觉得实在是太麻烦,所以根据常用到的情况写了一个简便的combobox,再次记录下来,以免放在某个地方忘记了找不到了. 定义一个基本的baseCombobox类,如下. Ext.define('Admin.view.baseCmp.BaseCombobox', { extend: 'Ext.form.field.ComboBox', xtype: 'baseCombobox', editable: false, lab

随机推荐