Показать сообщение отдельно
  #1 (permalink)  
Старый 08.09.2011, 13:09
Новичок на форуме
Отправить личное сообщение для Lokich Посмотреть профиль Найти все сообщения от Lokich
 
Регистрация: 08.09.2011
Сообщений: 1

GridPanel "теряет" свой store при многократном вызове экземпляров GridPanel
Здравствуйте.
я занимаюсь созданием интерфейса на ExtJs 3.3.1, в котором динамически должны отображаться PopUp окна, в которых динамически геренятся GridPanel.
т.к. весь интерфейс динамический, и все его поля, и содержимое должно генерироваться на лету, был написан специальный метод, который генерит массив со столбцами, и store для этого гридника:
getFlatGridConfiguration: function (objectId) {
        var feture = new Feature('someurl');
        var cmd = { procedure: 'GetEtalonColumnsList', args: { P_ID_OBJECT: objectId} };
        this.MDdict_Columns = feture.Execute(cmd);

        //Формируем набор столбцов
        var clmn = [];
        fld = [];
        for (i = 0; i < this.MDdict_Columns.length; i++) {
            if (this.MDdict_Columns[i].DISPLAY_SIZE == 0)
                continue;

            clmn.push({ id: 'cl' + this.MDdict_Columns[i].NM_SOURCE, header: this.MDdict_Columns[i].NM_DISPLAY, sortable: true, width: this.MDdict_Columns[i].DISPLAY_SIZE, dataIndex: this.MDdict_Columns[i].NM_SOURCE });
            fld.push(this.MDdict_Columns[i].NM_SOURCE);
        }
        //Формируем источник данных
        var ds = new TPageJsonStore();
        ds.fields = fld;
        ds.PageSize = 20;
        ds.writer = new Ext.data.JsonWriter({ fields: fld });
        ds.reader = new Ext.data.JsonReader({ fields: fld });
        ds.url = 'someurl';
        ds.loadCommand = { procedure: 'SomeProcedureName', args: { P_ID_OBJECT: objectId} };
        return { Columns: clmn, Store: ds };
    },

дело в том, что этот метод вызывается многократно, и для каждого гридника в initComponent есть строки, которые вызывают этот метод
var dictConf = getFlatGridConfiguration(this.objectId);
        this.columns = dictConf.Columns;
        this.store = dictConf.Store;


проблема в том, что после того, как я открываю еще одно окно с гридником, после работы с ним, я его закрываю, и возвращаюсь к первому, и его store = null.
сначала я подумал, что проблема в том, что они используют один и тот же TPageJsonStore, и я сделал массив из них, и использовал новый экземпляр, но это не помогло. В массиве сам store присутствует, но у гридника, store = null.

второй день уже не знаю, как побороть данную, проблему, и с чем это связанно. может быть кто-то сможет мне с этим помочь?
Ответить с цитированием