当我点击树记录时,我会尝试设置值并设置这些值形式。
在事件中触发cleritemclick: this.showDataFields
功能:
....
showDataFields: function(view, record, item, index, event) {
//got a form with fields
var panel = view.up('maintab');
console.log(panel)
//var formfield = panel.down('actionform');
//assign values from selected record to form fields
//formfield.loadRecord(record);
},
..........
在该函数中,view.up ('maintab')
的填充不足。
maintab
是容纳树的Ext.tab.Panel
。
为什么不能得到最上面的容器,以及如何正确地做到这一点?
以小提琴为例
感谢
您应该在showDataFields
函数中使用view.up('treepanel').nextSibling().getForm().setValues(record.data)
来设置这些值形式。
您本可以提供一个更好的例子,因此在所提出的限制范围内。
我得到的答案是ActionFormTree类中的更改,得到了以下代码:
Ext.define('Fiddle.view.ActionFormTree', {
extend: 'Ext.form.Panel',
alias: 'widget.actionformtree',
xtype: 'actionform',//mainform,
initComponent: function(){
var me = this;
Ext.apply(me,{
items: [{
xtype: 'form',
border: false,
anchor: '100%',
height: 100,
layout: {
type: 'vbox',
align: 'middle',
pack: 'center'
},
items: [{
xtype: 'textfield',
name: 'text',
fieldLabel: 'Наименование',
itemId: 'name_field',
}, {
xtype: 'textfield',
name: 'code',
fieldLabel: 'Код',
itemId: 'code_field',
}]
}],
buttons: [{
text: 'Save Changes',
scope: me,
handler: function (button) {
//Эта панель со значениями полей
form = me.down('form');
var mainpanel = me.up('#maincontainer');
var treeform = mainpanel.down('usertree');
var sel = treeform.getSelectionModel().getSelection()[0];
store = treeform.getStore();
console.log(treeform)
store.suspendAutoSync()
var child = sel.set({
text: 'Измененное',
leaf: true
});
sel.expand()
store.resumeAutoSync();
//var currRecord = form.getRecord();
//if (currRecord) {
// form.updateRecord();
// form.reset();
//}
}
}]
});
me.callParent(arguments);
}
});
因此,在本例中,要使其工作,您需要选择一个节点才能工作
希望它能帮助你完成你的问题。
样本到您的代码