02.12.2011, 17:06
|
Новичок на форуме
|
|
Регистрация: 02.12.2011
Сообщений: 5
|
|
Как сделать загрузку 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
|
Новичок на форуме
|
|
Регистрация: 02.12.2011
Сообщений: 5
|
|
попробовал:
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..
|
|
02.12.2011, 18:29
|
С++/C# modest developer
|
|
Регистрация: 07.11.2011
Сообщений: 244
|
|
var r = grid.getSelectionModel().getSelected();
var id = r.get('id');
|
|
02.12.2011, 18:44
|
Новичок на форуме
|
|
Регистрация: 02.12.2011
Сообщений: 5
|
|
это идея.. СПАСИБО! остается при загрузке стора менять 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});
не работает..
|
|
02.12.2011, 18:54
|
С++/C# modest developer
|
|
Регистрация: 07.11.2011
Сообщений: 244
|
|
Сообщение от Сергей З
|
остается при загрузке стора менять url
|
зачем url менять? просто параметр в store передавайте и все...
Ext.getCmp('DepStore').store.load({
params: {id: r.get('id')}
});
или как теперь в 4-м ExtJS...
Последний раз редактировалось nekto_O, 02.12.2011 в 18:57.
|
|
02.12.2011, 19:01
|
Новичок на форуме
|
|
Регистрация: 02.12.2011
Сообщений: 5
|
|
понял .. хотя с URL тоже получилось .. просто не туда стучался.. надо к store.proxy.conn.url ..
|
|
|
|