Использование ExtJS 4.2.2В ExtJS 4.2.2, почему loadRecord() загружает данные, но форма не отражает новые данные?
У меня есть сетка, и когда я правая кнопка мыши на сетке и выберите из моего контекстного меню, окно с формой создается, и визуализация, я получаю сетки выбранной записи строки и используйте форму loadRecord для загрузки записи.
Firebug показывает, что запись была загружена в поля формы, но в визуализированной форме поля являются enpty.
Любые идеи?
Вот несколько примеров, иллюстрирующих проблему.
Если вы установили точку останова в строке с var test = 'test'; вы увидите, что данные загружаются в текстовые поля формы, но затем продолжаются мимо точки разрыва и видят, что текстовые поля не отражают данные.
Ext.onReady(function() {
Ext.define('com.myCompany.MyGridModel', {
extend : 'Ext.data.Model',
fields : [{
name : 'name',
type : 'string'
}, {
name : 'address',
type : 'string'
}, {
name : 'type',
type : 'string'
}]
});
var store = Ext.create('Ext.data.Store', {
model: 'com.myCompany.MyGridModel',
proxy: {
type: 'ajax',
url: 'centers.json',
reader: {
type: 'json',
root: 'centers'
}
}
});
store.load();
var grid = Ext.create('Ext.grid.Panel', {
layout: 'fit',
store: store,
columns: [{
text: 'Name',
dataIndex: 'name',
name: 'name'
}, {
text: 'IP Address',
dataIndex: 'address',
name: 'address'
}, {
text: 'Type',
dataIndex: 'type',
name: 'type'
}],
renderTo: Ext.getBody(),
listeners: {
itemcontextmenu : function(view, record, item, index, event){
var selectedItem = record;
event.preventDefault();
new Ext.menu.Menu({
items: [{
text : 'Modify',
handler : function(widget, event) {
Ext.create('Ext.window.Window', {
height : 380,
width : 540,
resizable : false,
closable: true,
modal: true,
layout :{
type : 'fit'
},
items : [{
xtype : 'form',
frame : true,
height : 250,
itemId : 'centerContentForm',
width : 400,
bodyPadding : 10,
items : [{
xtype : 'textfield',
itemId : 'txtName',
height : 30,
width : 401,
fieldLabel : 'Name',
name: 'name',
allowBlank : false
},{
xtype : 'textfield',
itemId : 'txtIPAddress',
height : 30,
width : 401,
fieldLabel : 'Address',
name: 'address',
allowBlank : false,
},{
xtype : 'textfield',
itemId : 'txtType',
height : 30,
width : 401,
fieldLabel : 'Type',
name: 'type',
allowBlank : false
}]
}],
listeners: {
render: function(win) {
win.down('form').loadRecord(selectedItem);
var test = 'test';
}
}
}).show();
} // end of right-click handler
}]
}).showAt(event.getXY());
}
}
});
grid.getView().refresh();
});
Вы пробовали doLayout() после того, как был загружен данные? –
Можете ли вы разместить свой код? – Patrick
Я никогда не использовал 'loadRecord()', но первая возможная проблема, которая возникает у меня, заключается в том, что в вашей модели есть поля 'name',' address' и 'type', в то время как ваши текстовые поля называются' name', 'ipaddress' и' username'. Два из них не совпадают, так как будет 'loadRecord()' знать, как, вероятно, заполнить текстовые поля? – forgivenson