Новичок
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.9.2009
Репутация: нет Всего: 1
|
Вобщем собственно проблема следующая. Решил заняться изучением ExtJS. И сейчас задача - создать редактируемую таблицу, которая бы работала вместе с jsonstore. Всё вроде бы заработало и update пашет и загрузка. Проблемы начались, когда я попытался реалтизовать операцию создания нового элемента. Дело в том, что в таблице БД есть автоинкрементный счётик, по которому происходит идентификация элемента. Создавая запись в grid, я его значение не знаю, но заполняю строку дефолтными значениями. Затем автоматически(не знаю где эта опция) идёт запрос к скрипту. Вот тут-то и проблема, я не понимаю и не смог найти как должен выглядеть ответ на операцию записи, чтобы запись в grid обновилась, после того как элемент записан в БД. вот код: Код | $(document).ready(function() { var view = new Ext.Viewport({ layout: 'border', items: [{ region: 'west', collapsible: true, title: 'Navigation', xtype: 'treepanel', width: 200, autoScroll: true, split: true, loader: new Ext.tree.TreeLoader(), root: new Ext.tree.AsyncTreeNode({ expanded: true, children: [{ text: 'Каталог', id: 'catalog', loader: new Ext.tree.TreeLoader({baseParams: {ajax: true}, dataUrl: '/catalog/admin/getGroups'}) }, { text: 'События', id: 'events', }, { text: 'Выставки', id: 'exeb', }] }), rootVisible: false, listeners: { click: function(n) { if(n.leaf) { var tab = view.getComponent('elements').add({ id: n.attributes.id, title: n.attributes.text, closable: true, xtype: 'editorgrid', cm: cms.catalogElement, store: stores.catalogElement(n.attributes.id.substr(5)), header: true, tbar: [{ text: 'Добавить', handler: function() { var el = tab.getStore().recordType; var r = new el({ name: 'Продукт 1', year: 2010, description: "", author: "" }); tab.stopEditing(); tab.getStore().insert(0, r); tab.startEditing(0, 0); } }], listeners: { } }); tab.getStore().load(); view.getComponent('elements').activate(tab); } } } }, { region: 'center', xtype: 'tabpanel', itemId: 'elements' }] }); });
var stores = { catalogElement: function(groupId) { return new Ext.data.JsonStore({ autoDestroy: true, url: '/catalog/admin/getElements', idProperty: 'catalogId', root: 'root', baseParams: {groupId: groupId}, fields: ['name', 'year', 'description', 'author', 'catalogId'], 'writer': new Ext.data.JsonWriter({writeAllFields: false}), listeners: { save: function() { //this.commitChanges(); }, update: function(n, rec) { ; } } }) } }
var cms = { catalogElement: new Ext.grid.ColumnModel({ columns: [{ id: 'id', header: 'ID', dataIndex: 'catalogId', width: 20, },{ id: 'name', header: 'Название', dataIndex: 'name', width: 220, editor: new Ext.form.TextField({ allowBlank: false }) },{ id: 'year', header: 'Год выпуска', dataIndex: 'year', width: 220, editor: new Ext.form.TextField({ allowBlank: false }) },{ id: 'descr', header: 'Описание', dataIndex: 'description', width: 220, editor: new Ext.form.TextField({ allowBlank: true }) },{ id: 'auth', header: 'Автор', dataIndex: 'author', width: 220, editor: new Ext.form.TextField({ allowBlank: true }) }] }) }
|
|