Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Как сделать загрузку Store в поле Grid в зависимости от id строки? (https://javascript.ru/forum/extjs/23700-kak-sdelat-zagruzku-store-v-pole-grid-v-zavisimosti-ot-id-stroki.html)

Сергей З 02.12.2011 17:06

Как сделать загрузку 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'

})}

Сергей З 02.12.2011 17:43

попробовал:
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..

nekto_O 02.12.2011 18:29

var r = grid.getSelectionModel().getSelected();
var id = r.get('id');

Сергей З 02.12.2011 18:44

это идея.. СПАСИБО! остается при загрузке стора менять 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});
не работает..
:(

nekto_O 02.12.2011 18:54

Цитата:

Сообщение от Сергей З
остается при загрузке стора менять url

зачем url менять? просто параметр в store передавайте и все...
Ext.getCmp('DepStore').store.load({
 params: {id: r.get('id')}
});

или как теперь в 4-м ExtJS...

Сергей З 02.12.2011 19:01

понял .. хотя с URL тоже получилось .. просто не туда стучался.. надо к store.proxy.conn.url ..

:thanks:


Часовой пояс GMT +3, время: 04:29.