Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.04.2013, 09:38
Новичок на форуме
Отправить личное сообщение для A.V. Посмотреть профиль Найти все сообщения от A.V.
 
Регистрация: 31.01.2012
Сообщений: 3

Несколько Grid-панелей на странице
Привет всем.
Пишу на ExtJS 4 (+ PHP, MySQL) систему управления данными. Основное - Grid-панель. Реализовал все CRUD-операции.
Проблема в следующем: когда добавляешь ещё одну Grid-панель (либо сбоку - в обычной панели, либо в одном из смежных tab'ов) CRUD-операции панель перестаёт корректно работать. Как я понял - это из-за того, что две или более Grid-панели на странице.
Искал в документации методы для обращения к выбранному хранилищу, ничего не нашёл. Гугл тоже ответов не даёт.
Прошу помощи: подскажите, можно ли решить проблему - реализовать CRUD-операции с несколькими панелями? Стоит ли вообще так делать? И если нет, то есть ли какая-либо альтернатива?

Приведу код контроллера:
Ext.define('SM.controller.Line', {
    extend: 'Ext.app.Controller',

    stores: ['Line'],

    models: ['Line'],

    views: ['line.Line', 'line.Grid'],

    refs: [{
            ref: 'linePanel',
            selector: 'panel'
        },{
            ref: 'lineGrid',
            selector: 'grid'
        }
    ],

    init: function() {
        this.control({
            'linegrid dataview': {
                itemdblclick: this.addLine
            },
            'linegrid button[action=add]': {
            	click: this.addLine
            },
            'linegrid button[action=delete]': {
                click: this.deleteLine
            },
            'lineform button[action=save]': {
                click: this.updateLine
            }
        });
    },

    addLine: function(grid, record) {
        var edit = Ext.create('SM.view.line.Line').show();

        if(record){
        	edit.down('form').loadRecord(record);
        }
    },
    
    updateLine: function(button) {
        var win    = button.up('window'),
            form   = win.down('form'),
            record = form.getRecord(),
            values = form.getValues();
        
        var novo = false;
        
		if (values.id > 0){
			record.set(values);
		} else{
			record = Ext.create('SM.model.Line');
			record.set(values);
			this.getLineStore().add(record);
            novo = true;
		}
        
		win.close();
        this.getLineStore().sync();

        if (novo){ 
            this.getLineStore().load();
        }
    },
    
    deleteLine: function(button) {
    	
    	var grid = this.getLineGrid(),
    	record = grid.getSelectionModel().getSelection(), 
        store = this.getLineStore();

	    store.remove(record);
	    this.getLineStore().sync();

        this.getLineStore().load();
    }
});


Кстати, обращение getStore('Line') аналогично ли getLineStore()?

Заранее спасибо за помощь.

P.S. только начинаю разбираться с ExtJS, многое не понимаю полностью, поэтому и спрашиваю совета.

Последний раз редактировалось A.V., 15.04.2013 в 09:37.
Ответить с цитированием
  #2 (permalink)  
Старый 16.04.2013, 11:17
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

как вы сказали: из за нескольких гридов.. скорей всего да, идет смешение.

я так понимаю это часть кода?? так сложно что то сказать..
попробуйте расставить логи (console.log(parameter); ). и смотрите что он выдает и что должно быть.. может найдете с какого места идет сбой
Ответить с цитированием
  #3 (permalink)  
Старый 20.04.2013, 21:09
VKS VKS вне форума
Профессор
Отправить личное сообщение для VKS Посмотреть профиль Найти все сообщения от VKS
 
Регистрация: 24.09.2010
Сообщений: 178

У гридов один и тот же store?
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2013, 01:46
Новичок на форуме
Отправить личное сообщение для alex_dutch Посмотреть профиль Найти все сообщения от alex_dutch
 
Регистрация: 27.04.2013
Сообщений: 2

Если один и тот же стор то проблемно.
Какие именно траблы, уточни?

Сам сейчас пытаюсь использовать один стор для закладок с гридами.

Последний раз редактировалось alex_dutch, 29.04.2013 в 00:48.
Ответить с цитированием
  #5 (permalink)  
Старый 07.05.2013, 11:47
Новичок на форуме
Отправить личное сообщение для A.V. Посмотреть профиль Найти все сообщения от A.V.
 
Регистрация: 31.01.2012
Сообщений: 3

Спасибо всем за участие.

Дело было в том, что использовал Viewport. Из документации узнал, что Viewport может быть только один на странице.
А загвоздка возникала в том, что не работало удаление, несмотря на то, что store были разные, и при добавлении позиции не обновлялся список в grid.

То есть здесь
deleteNews: function(button) {
    	var grid = this.getLineGrid(),
    	    record = grid.getSelectionModel().getSelection(), 
          store = this.getLineStore();

	    store.remove(record);  
	    this.getLineStore().sync();

      this.getLineStore().load();
    }

не определяется из которого именно grid'а должна быть удалена позиция.

Искал в документации, но не нашёл способа обратиться к разным grid'ам, если на странице их несколько в одном Viewport'е.

Спасибо.
Ответить с цитированием
  #6 (permalink)  
Старый 08.05.2013, 16:19
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

в гриде пишется id'шник и потом к нему можно обратится:
var grid = Ext.getCmp('idGrid');
также можно в массив список гридов запхнуть, если надо перебрать циклом..
Ответить с цитированием
  #7 (permalink)  
Старый 20.05.2013, 09:22
Новичок на форуме
Отправить личное сообщение для A.V. Посмотреть профиль Найти все сообщения от A.V.
 
Регистрация: 31.01.2012
Сообщений: 3

skrudjmakdak,

спасибо за совет. Весьма полезен.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX несколько элементов на странице... myocean AJAX и COMET 2 12.11.2012 12:27
AJAX несколько элементов на странице... myocean jQuery 3 12.11.2012 00:00
Несколько версий JQuery UI на одной странице. Casufi jQuery 2 10.11.2012 15:24
Несколько iframe на странице oblomov86 Events/DOM/Window 3 19.12.2011 12:00
Несколько скрытых аудио-плееров на странице fanks Элементы интерфейса 1 21.02.2011 13:33