この問題を解決するには、EditorGridPanel の ColumnModel で ComboBox が表示されるレンダラー属性を使用し、次のように再レンダリングする必要があります:
//部門リスト
var comboxDepartmentStore = new Ext.data.Store({
proxy: new Ext.data .HttpProxy({
url: "GetDepartmentJson .aspx",
メソッド: 'GET'
})、
リーダー: new Ext.data.JsonReader({
ルート: 'data' 、
totalProperty: 'totalCount'、
フィールド: [
{ 名前: '部門 ID'、マッピング: 'ID' }、
{ 名前: '部門名'、マッピング: '名前' }
]
})
});
//コンボボックス リスト内の対応する ID の値に従ってレンダリングします
function rendererMeterTypeCombobox(value, p, r) {
var インデックス = comboxDepartmentStore.find(Ext.getCmp(' cbDepartment').valueField, value);
var レコード = comboxDepartmentStore.getAt(index);
var displayText = ""
if (レコード) == null) {
return value;
} else {
return record.data.astype; // レコード
の表示フィールドの値を取得します。
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: 'name',
width: 40、
dataIndex: '名前'
}、{
ヘッダー: '部門'、
幅: 80、
dataIndex: '部門'、
レンダラー: rendererDepartmentCombobox、
editor: new Ext.form.ComboBox({
id: "cbDepartment", //
forceSelection: true,
selectOnFocus: true,
typeAhead: true,
triggerAction: が必要です'all',
ストア: comboxDepartmentStore,
モード: 'local',
displayField: 'Departmentname',
valueField: 'Departmentid',
lazyRender: true
})
}]、
デフォルト: {
zsortable: true、
menuDisabled: false、
width: 100
}
}); new Ext.grid.EditorGridPanel({
id: ' TestGrid',
store: store, //EditorGridPanel で使用されるストア
trackMouseOver: true,
disableSelection: false,
clicksToEdit: 1 , //編集するクリック数を設定します
loadMask : true,
autoHeight: true,
cm: cm,
sm: sm,
viewConfig: {
columnsText: 'Show /列を隠す',
sortAscText: '正順に並べる',
sortDescText: '逆順に並べる',
forceFit: true,
enableRowBody: true
},
bbar : new Ext.PagingToolbar({
pageSize: 25,
store: store,
displayInfo: true,
displayMsg: '現在、{0} から {1} まで、合計 {2} を表示していますrecords',
emptyMsg: "現在レコードはありません"
})
});