Extjs 如何设置组合框项';id';在“选择”按钮上转到网格中的另一列?
我们在模型中存储了如下字段:Extjs 如何设置组合框项';id';在“选择”按钮上转到网格中的另一列?,extjs,extjs4,Extjs,Extjs4,我们在模型中存储了如下字段: fields: ["name_id", "name"] me.columns = [ { header:"Name", dataIndex:"name_id", hide: true }, { header:"Name", dataIndex:"name", xtype: 'combocolumn', editor: {
fields: ["name_id", "name"]
me.columns = [
{
header:"Name",
dataIndex:"name_id",
hide: true
},
{
header:"Name",
dataIndex:"name",
xtype: 'combocolumn',
editor: {
xtype:'NameCombo',
dataIndex:"name_id"
},
filter: true
},
]
我们有如下列的网格:
fields: ["name_id", "name"]
me.columns = [
{
header:"Name",
dataIndex:"name_id",
hide: true
},
{
header:"Name",
dataIndex:"name",
xtype: 'combocolumn',
editor: {
xtype:'NameCombo',
dataIndex:"name_id"
},
filter: true
},
]
其中xtype NameCombo定义为:
Ext.define("NameCombo",{
extend: "Ext.form.ComboBox",
triggerAction: 'all',
displayField: 'name',
valueField: 'id',
lazyRender: true,
editable: false,
store: "Store",
alias: ['widget.NameCombo'],
});
谁能告诉我,如何将组合框项“id”设置为另一列,我在配置中通过NameCombo中的“dataIndex:“name\u id”设置了该列?我有一个解决方案 如果我们更改NameCombo小部件,如下所示,我们可以将“id”设置为记录的另一个字段
Ext.define("NameCombo",{
extend: "Ext.form.ComboBox",
displayField: 'name',
valueField: 'name',
keyField: 'id',
triggerAction: 'all',
lazyRender: true,
editable: false,
store: "Store",
alias: ['widget.NameCombo'],
initComponent: function(){
var me = this;
me.listeners = {
select: me.itemChanged
};
this.callParent();
},
itemChanged: function(combo, records, eOpts)
{
var me = this;
Ext.Array.each(records, function(record) {
if (me.dataIndex) {
var grid = me.scope;
var sm = grid.getSelectionModel();
var lastRow = sm.getLastSelected();
var columns = me.scope.columns,
i, columnsLength, column;
var id = record.data[me.keyField];
lastRow.set(me.dataIndex,id);
//TODO: Is there any simple way to update the value in the column of the grid?
for (i = 0, columnsLength = columns.length; i < columnsLength; i++) {
column = columns[i];
if (column.dataIndex === me.dataIndex) {
column.getEditor().setValue(id);
}
}
}
})
});
Ext.define(“NameCombo”{
扩展:“Ext.form.ComboBox”,
displayField:'名称',
valueField:'名称',
关键字字段:“id”,
触发动作:“全部”,
lazyRender:是的,
可编辑:false,
商店:“商店”,
别名:['widget.NameCombo'],
initComponent:function(){
var me=这个;
me.listeners={
选择:me.itemChanged
};
这是callParent();
},
itemChanged:函数(组合、记录、EOPT)
{
var me=这个;
Ext.Array.each(记录、函数(记录){
if(me.dataIndex){
var grid=me.scope;
var sm=grid.getSelectionModel();
var lastRow=sm.getLastSelected();
var columns=me.scope.columns,
i、 柱长度,柱;
var id=record.data[me.keyField];
set(me.dataIndex,id);
//TODO:有没有简单的方法来更新网格列中的值?
对于(i=0,columnsLength=columns.length;i
还有更好的解决办法吗