Вот что я нашел: ExtJS, кажется, теряется, когда нет поля «id».Таким образом, после вызова sync()
, если вы не указали поле «id», оно как бы реорганизует сетку и не может найти «старую» запись (ту, которую я запомнил непосредственно перед вызовом).Это только то, что, я думаю, я могу ошибаться.
В любом случае, я сделал поворот: чтобы остаться "однородным", я собираюсь сделать xxxCreate()
и xxxCreateValidate()
, то же самое дляxxxUpdate()
и xxxUpdateValidate()
.Я сделал их для примера: user => userCreate()
, userCreateValidate()
, userUpdate()
и userUpdateValidate()
:
init: function () {
this.control({
/* (!) Actions in 'userlist' */
'userlist': {
itemdblclick: this.userEdit
},
'userlist button[action=create]': {
click: this.userCreate
},
'userlist button[action=delete]': {
click: this.userDelete
},
/* (!) Actions in 'useredit' */
'useredit button[action=create]': {
click: this.userCreateValidate
},
'useredit button[action=save]': {
click: this.userEditValidate
}
});
},
userCreate: function(button) {
/* Using Ext.create() to pass variable create:true
* instead of the shortcut:
* var view = Ext.widget('useredit');
*/
var view = Ext.create('GS.view.user.Edit', {
create:true
});
},
userCreateValidate: function(button) {
var win = button.up('window'),
form = win.down('form'),
values = form.getValues();
this.getUsersStore().add(values);
this.getUsersStore().sync();
win.close();
},
userEdit: function(grid, record) {
var view = Ext.widget('useredit');
view.down('form').loadRecord(record);
},
userEditValidate: function (button) {
var win = button.up('window'),
form = win.down('form'),
record = form.getRecord(),
values = form.getValues();
record.set(values);
win.close();
this.getUsersStore().sync();
},
Я надеюсь, что мой код поможет кому-то ... теперь яищу способ обработки ключей в сетке.И, как и все с ExtJS: вы не тратите свое время на кодирование, потому что все уже сделано, вы тратите свое время на поиск ... это на самом деле более неприятно =)
В любом случае, самое важное, на что следует обратить внимание, это то, что добавленная запись не выбрана .Это просто обходной путь для продолжения разработки, но это не то, что я хотел (это не совсем то, о чем я спрашиваю в вопросе).