Привет всем.
Пишу на ExtJS 4 (+ PHP, MySQL) систему управления данными. Основное - Grid-панель. Реализовал все CRUD-операции.
Проблема в следующем: когда добавляешь ещё одну Grid-панель (либо сбоку - в обычной панели, либо в одном из смежных tab'ов) CRUD-операции панель перестаёт корректно работать. Как я понял - это из-за того, что две или более Grid-панели на странице.
Искал в документации методы для обращения к выбранному хранилищу, ничего не нашёл. Гугл тоже ответов не даёт.
Прошу помощи: подскажите, можно ли решить проблему - реализовать CRUD-операции с несколькими панелями? Стоит ли вообще так делать? И если нет, то есть ли какая-либо альтернатива?
Приведу код контроллера:
Ext.define('SM.controller.Line', {
extend: 'Ext.app.Controller',
stores: ['Line'],
models: ['Line'],
views: ['line.Line', 'line.Grid'],
refs: [{
ref: 'linePanel',
selector: 'panel'
},{
ref: 'lineGrid',
selector: 'grid'
}
],
init: function() {
this.control({
'linegrid dataview': {
itemdblclick: this.addLine
},
'linegrid button[action=add]': {
click: this.addLine
},
'linegrid button[action=delete]': {
click: this.deleteLine
},
'lineform button[action=save]': {
click: this.updateLine
}
});
},
addLine: function(grid, record) {
var edit = Ext.create('SM.view.line.Line').show();
if(record){
edit.down('form').loadRecord(record);
}
},
updateLine: function(button) {
var win = button.up('window'),
form = win.down('form'),
record = form.getRecord(),
values = form.getValues();
var novo = false;
if (values.id > 0){
record.set(values);
} else{
record = Ext.create('SM.model.Line');
record.set(values);
this.getLineStore().add(record);
novo = true;
}
win.close();
this.getLineStore().sync();
if (novo){
this.getLineStore().load();
}
},
deleteLine: function(button) {
var grid = this.getLineGrid(),
record = grid.getSelectionModel().getSelection(),
store = this.getLineStore();
store.remove(record);
this.getLineStore().sync();
this.getLineStore().load();
}
});
Кстати, обращение getStore('Line') аналогично ли getLineStore()?
Заранее спасибо за помощь.
P.S. только начинаю разбираться с ExtJS, многое не понимаю полностью, поэтому и спрашиваю совета.