Ext中combobox在Grid里显示问题
Ext的Grid中使用combobox做为编辑控件时,遇到在combobox中选择了相应的选项时(displayField),在grid中却显示了valueField值。现解决如下:
Ext的Grid中使用combobox做为编辑控件时,遇到在combobox中选择了相应的选项时(displayField),在grid中却显示了valueField值。现解决如下:
图示:
js代码:
1
var grid;2
function ready(queryCondition)3

{4
var pageSize = 150;5
var queryConditionTemplate = document.getElementById("hid").value;6
var url = "../AjaxFactory/AjaxGridData.aspx?cln=BindCommandTemplate&orderField=FGID&pagesize=" + pageSize+"&orderType=asc&queryConditionTemplate="+queryConditionTemplate;7
8
var url1= "../AjaxFactory/AjaxGridData.aspx?cln1=BindTemplateGroup&orderField=DMCOD&orderType=asc&projectID="+fatherID;9
var url2 = "../AjaxFactory/AjaxGridData.aspx?cln2=BindG050&orderField=DMCOD&orderType=asc";10
//var store;11
var comStore1;12
var comStore2;13
var storeMapping;14
var addCategory;15
var afterEdit;16
var defaultStore;17
var specoalStore;18
19
storeMapping=["FGID","COMMANDID","PARENTNAME","FUNCTIONIDNAME","NAME","GROUPNAME","HANDLESNAME"];20
21
//grid 数据源22

store = new Ext.data.Store(
{23

proxy:new Ext.data.HttpProxy(
{24
url:url25
}),26

reader:new Ext.data.JsonReader(
{27
root:'data',28
totalProperty: 'totalCount',29
fields:30
[31
'FGID','COMMANDID','PARENTNAME','SONNAME','NAME','FUNCTIONID','GROUPNAME','HANDLESNAME'32
]33
}), 34
remoteSort:true35
}); 36
//模板组37

comStore1 = new Ext.data.Store(
{38

proxy:new Ext.data.HttpProxy(
{url:url1}),39

reader: new Ext.data.JsonReader(
{40
root:'data',41
totalProperty: 'totalCount',42
fields:43
['GROUPID','GROUP_NAME']44
})45
}),46
comStore1.load();47
//读写48

comStore2 = new Ext.data.Store(
{49

proxy:new Ext.data.HttpProxy(
{url:url2}),50

reader: new Ext.data.JsonReader(
{ 51
root:'data',52
totalProperty: 'totalCount',53
fields:54
['DMCOD','DMCPT']55
})56
}),57
comStore2.load();58
59
60
var cm=new Ext.grid.ColumnModel([ 61
new Ext.grid.RowNumberer(),62

{header:"角色编号",align:'center',sortable: false,dataIndex:'FGID',hidden:true},63

{header:"命令编号",align:'center',sortable: false,dataIndex:'COMMANDID',hidden:true},64

{header:"子系统",align:'center',sortable: false,dataIndex:'PARENTNAME'},65

{header:"模块",align:'center',sortable: false,dataIndex:'SONNAME'},66

{header:"功能",align:'center',sortable: false,dataIndex:'NAME'},67

{68
header:"模板组",69
dataIndex:"GROUPNAME",70
align:'center',71

editor:new Ext.form.ComboBox(
{72
id:'termtype',73
name:'termtype', 74
readOnly:true,75
fieldLabel: '模板组', 76
hiddenName:'id',77
store: comStore1,78
displayField:'GROUP_NAME',79
valueField:'GROUPID', 80
typeAhead: true,81
mode: 'local',82
triggerAction: 'all',83
emptyText:'请选择',84
selectOnFocus:true85
}),86
renderer: function(value, cellmeta, record) 87

{88
//通过匹配value取得ds索引89
var index = comStore1.find(Ext.getCmp('termtype').valueField,value);90
//通过索引取得记录ds中的记录集91
var record = comStore1.getAt(index);92
//返回记录集中的value字段的值93
var returnvalue = "";94
if (record) 95

{96
returnvalue = record.data.GROUP_NAME;97
}98
return returnvalue;//注意这个地方的value是上面displayField中的value99
}100
},101

{102
header:"操作性",103
dataIndex:"HANDLESNAME",104
align:'center',105

editor:new Ext.form.ComboBox(
{106
id:'termtype1',107
name:'termtype1',108
readOnly:true, 109
fieldLabel: '操作性',110
hiddenName:'id',111
store: comStore2,112
displayField:'DMCPT',113
valueField:'DMCOD',114
115
typeAhead: true,116
mode: 'remote',117
triggerAction: 'all',118
emptyText:'请选择',119
selectOnFocus:true120
}),121
renderer: function(value, cellmeta, record) 122

{123
//通过匹配value取得ds索引124
var index = comStore2.find(Ext.getCmp('termtype1').valueField,value);125
//通过索引取得记录ds中的记录集126
var record = comStore1.getAt(index);127
//返回记录集中的value字段的值128
var returnvalue = "";129
if (record) 130

{131
returnvalue = record.data.DMCPT;132
}133
return returnvalue;//注意这个地方的value是上面displayField中的value134
}135
}136
]); 137
cm.defaultSortable = true;138
139

grid=new Ext.grid.EditorGridPanel(
{140
id:"topicCategoryGrid", 141
store:store,142
cm:cm, 143
loadMask: true,144
clicksToEdit:1,145
renderTo:'authorize', 146
trackMouseOver:true,147
autoShow : true,148
autoScroll: true,149

loadMask:
{msg:"数据加载中,请稍等
"},150
frame:true,151
height: window.screen.availHeight - 200,//176,152
width: window.screen.availWidth - s_widths,153

viewConfig:
{forceFit:true}, 154
region:"center",155

bbar:new Ext.PagingToolbar(
{156
pageSize:150,157
store:store,158
displayInfo:true,159
displayMsg:'当前显示 {0} - {1}条记录 /共 {2}条记录',160
emptyMsg:"没有数据"161
})162
});163
grid.on("afteredit",164
function (obj)165

{166
var r=obj.record;167
var l = obj.field;168
var uFGID=r.get("FGID");169
var uCOMMANDID = r.get("COMMANDID"); 170
var uGROUPNAME = Ext.getCmp("termtype").getValue();171
var uHANDLESNAME = Ext.getCmp("termtype1").getValue();172
var today = new Date().getTime();173

Ext.Ajax.request(
{174
url:"../AjaxFactory/AjaxGridData.aspx?cln=UpdateRoleTemplate&orderField=FGID&orderType=asc&da="+today,175
method:'POST',176

params:
{177
uFGID:uFGID, 178
uCOMMANDID:uCOMMANDID,179
uGROUPNAME:uGROUPNAME,180
uHANDLESNAME:uHANDLESNAME,181
l:l182
},183

success:function(response)
{184
//store.load();185
},186

failure:function(response)
{187
Ext.MessageBox.alert("温馨提示", "请求失败!");188
},189
scope:this190
});191
},192
this);193

194

grid.getStore().load(
{195

params:
{196
start: 0,197
limit: 12198
}199
}); 200
}201
//自适应202
function GridOnReSize(s_widths)203

{204
grid.setWidth(window.screen.availWidth - s_widths); 205
grid.setHeight(window.screen.availHeight - 200);206
} 207
关键代码如下:
1
renderer: function(value, cellmeta, record) 2

{3
//通过匹配value取得ds索引4
var index = comStore1.find(Ext.getCmp('termtype').valueField,value);5
//通过索引取得记录ds中的记录集6
var record = comStore1.getAt(index);7
//返回记录集中的value字段的值8
var returnvalue = "";9
if (record) 10

{11
returnvalue = record.data.GROUP_NAME;12
}13
return returnvalue;//注意这个地方的value是上面displayField中的value14
}
浙公网安备 33010602011771号