2014-01-10 3 views
0

Я новый пользователь сенча прикосновениемСенча фильтр данных из магазина

У меня есть этот магазин

Ext.define('Final.store.Fotos',{ 
extend: 'Ext.data.Store', 
requires: ['Final.model.Foto'], 
config:{ 
    model: 'Final.model.Foto', 
    storeId: 'Fotos', 
    autoLoad: true, 
    proxy: { 
     type:'ajax', 
     url: '../../../prueba/index.cfm', 
     reader:'json' 
    } 
} 
}); 

модель

Ext.define('Final.model.Foto',{ 
extend: 'Ext.data.Model', 
config:{ 
    fields:[ 
     {name: 'caja', type: 'string'}, 
     {name: 'foto_id', type: 'int'}, 
     {name: 'id_caja', type: 'int'}, 
     {name: 'foto', type: 'string'} 
    ] 
} 
}); 

и контроллер

Ext.define('Final.controller.controladorCaja',{ 
extend: 'Ext.app.Controller', 
config: { 
    stores: ['Cajas', 'Fotos'], 
    models: ['Caja', 'Foto'], 

    refs: { 
     cajaLista: 'list' 
    }, 

    control: { 
     cajaLista: { 
      itemtap: 'clickCaja' 
     } 
    } 
}, 

clickCaja: function(series, item, evento, caja){ 
    var idcaja = caja.data.caja; 
    var vista = Ext.getCmp('principal'); 
    vista.push({ 
     title: ' Fotos', 
     items : [{ 
      extend: 'Ext.navigation.View', 
      config: { 
       id: 'fotos' 
      }, 
      items: [{ 
       xtype: 'button', 
       text: 'fsf' 
      }] 
     }] 
    }); 
} 
}); 

И в моей базе данных у меня есть 2 таблицы один с cajas или boxes и другие с изображениями, которые реляционные по id_caja или id_box

Так, в других точках зрения в сенч, я показываем имя ящиков в xtype: list. Итак, мой вопрос заключается в том, когда я нажимаю на элемент списка и запускаю функцию clickCaja, получаю идентификатор элемента и фильтруем изображения по полю id

ответ

1

Если ваш фото-список показывает все фотографии по умолчанию и должен быть ограничен конкретным «caja», если щелкнуть, вы можете использовать built in store filter.

var idcaja = caja.data.caja; 
Ext.getStore('Fotos').filterBy(function(record, id){ 
    return record.data.id_caja == idcaja; 
}, this); 

Edit: Если вы используете по умолчанию Ext.tab.Panel вы можете переключаться между вкладками с помощью метода setActiveItem для переключения между вкладками.

Пример:

В главной странице

Ext.define('App.view.Main', { 
    extend: 'Ext.tab.Panel', 
    xtype: 'main', 
    id : 'mainpanel', //set an id for your tab panel 
    ... 
} 

В контроллере:

refs: { 
    ..., 
    mainPanel :'#mainpanel' //get a reference to the main panel 
}, 

В вашем EventHandler вы могли бы использовать что-то вроде ...

this.getMainPanel().setActiveItem('fotoList'); //fotoList = xtype of your foto view 

... для переключения в ваш фото-лист.

+0

Спасибо очень интересно, но, например, как я могу изменить между представлениями, если у меня есть просмотр fotos и основной («основной») вид, в принципе у меня есть контроллер, а затем он загружает хранилище (cajas) и модель (caja), затем с itemtap, я хочу получить идентификатор элемента и перейти к другому представлению «fotos» и фильтровать (просто покажите мне фотографии этого id caja). – Frenetika

+0

Я добавил решение для переключения между двумя вкладками. Предполагая, что вы используете панель вкладок с двумя вкладками, где на первой вкладке показаны кайсы, а вторая вкладка показывает фотографии. Если вы хотите показать «cajas» только на панели вкладок, вы можете просто создать (Ext.create) панель списка фотографий и добавить ее в окно просмотра. – Adrian

Смежные вопросы