Как сделать загрузку Store в поле Grid в зависимости от id строки?
Есть задача: Создать грид с насзванием груп и участников группы , но поле участников группы в виде комбо и Стор должен загружатся в зависимости от id группы.. (для каждой строки отдельно).. не могу уяснить 2 момента : как передать id для формирования Стора и каким образом сделать его загрузку именно в момент запуска едитора для конкретного поля...
пробовал так, но это вариант для загрузки Стора поля не зависимо от id: columns : [ {header: I('id'), width: 50, sortable: true, dataIndex: 'id'} ,{header: I('Departments_name'), width: 160, sortable: true, dataIndex: 'Departments_name', editor: new Ext.form.TextField({})} ,{header: I('Departments_price'), width: 150, sortable: true, dataIndex: 'Departments_price',editor: new Ext.form.NumberField({})} ,{header: I('Departments_staff'), width: 150, sortable: true, dataIndex: 'Departments_staff', editor: new Ext.form.ComboBox({ store: DepartmentsStore, xtype: 'combo', valueField:'id', displayField:'value', mode:'local', lazyRender:true, anchor: '100%', hideLabel: true, editable: false, selectOnFocus:true, triggerAction: 'all', hiddenName: 'Departments_staff', name: 'Departments_staff' })} |
попробовал:
columns : [ {header: I('id'), width: 50, sortable: true, dataIndex: 'id'} ,{header: I('Departments_name'), width: 160, sortable: true, dataIndex: 'Departments_name', editor: new Ext.form.TextField({})} ,{header: I('Departments_price'), width: 150, sortable: true, dataIndex: 'Departments_price',editor: new Ext.form.NumberField({})} ,{header: I('Departments_staff'), width: 150, sortable: true, dataIndex: 'Departments_staff', listeners: { dblclick: function() { Ext.getCmp('DepStore').store.load(); } }, editor: new Ext.form.ComboBox({ store: new Ext.data.ArrayStore( { xtype: 'jsonstore', storeId: 'Departments', url: 'block/json/get_Departments.php', fields: ['id','value'], initComponent:function() { this.addEvents('ready'); }, is_ready:function() { this.fireEvent('ready', this); } }) , xtype: 'combo', valueField:'id', id:'DepStore', displayField:'value', mode:'local', lazyRender:true, anchor: '100%', hideLabel: true, editable: false, selectOnFocus:true, triggerAction: 'all', hiddenName: 'Departments_staff', name: 'Departments_staff' })} работает, но так будет загружатся весь Стор.., а как передать id не понятно.. пробовал в листенер функцию пихнуть (value,p,r) а потом передать r.data.id пишет что не знает что такое r.. |
var r = grid.getSelectionModel().getSelected(); var id = r.get('id'); |
это идея.. СПАСИБО! остается при загрузке стора менять url
пробовал: Ext.getCmp('DepStore').store.url = 'myPage.php?id='+id; Ext.getCmp('DepStore').store.load(); свойство меняет а загрузка всеравно с того что выставлен.. пробовал Ext.getCmp('DepStore').store.load({url:'myPage.php ?id='+id}); не работает.. :( |
Цитата:
Ext.getCmp('DepStore').store.load({ params: {id: r.get('id')} }); или как теперь в 4-м ExtJS... |
понял .. хотя с URL тоже получилось .. просто не туда стучался.. надо к store.proxy.conn.url ..
:thanks: |
Часовой пояс GMT +3, время: 04:29. |