Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.12.2012, 07:43
Аспирант
Отправить личное сообщение для XAPuTOH Посмотреть профиль Найти все сообщения от XAPuTOH
 
Регистрация: 17.12.2012
Сообщений: 63

опять pagingmemory
Всем привет.

Вопрос от новичка.

var myData = [
        ['0','3m Co',71.72,'9/1 12:00am'],
        ['1','Alcoa Inc',29.01,'9/1 12:00am'],
        ['2','Altria Group Inc',83.81,'9/1 12:00am'],
        ['3','American Express Company',52.55,'9/1 12:00am'],
        ['4','American International Group, Inc.',64.13,'9/1 12:00am'],
        ['5','AT&T Inc.',31.61,'9/1 12:00am'],
        ['6','Boeing Co.',75.43,'9/1 12:00am'],
        ['7','Caterpillar Inc.',67.27,'9/1 12:00am'],
        ['8','Citigroup, Inc.',49.37,'9/1 12:00am']
    ];
	
    Ext.define('log', {
        extend: 'Ext.data.Model',
        idProperty: 'id',
        fields: [
            {name:'id', type:'int'},
            {name:'datevalue', type:'date', dateFormat:'d.m.Y H:i:s'},
            {name:'obj_name', type:'string'},
            {name:'log_name', type:'string'},
        ]
	})

	var store = Ext.create('Ext.data.Store', {
		model: 'log',
        storeId:'ws_r_store_1_id',
		pageSize: 3,
		proxy: {
			type: 'pagingmemory',
			data: myData,
			reader: {
				type: 'array'
			}
		}
	})

потом идет грид в котором есть pagingtoolbar
и
store.load();


все отлично работает.

Дальше я коментирую сторчки:
//data: myData
....
и  
     //store.load();


и в пхп сперва загружаю этот скрипт а потом подгружаю данные в store
Ext.data.StoreManager.lookup('ws_r_store_1_id').loadData(" . json_encode($table_mm) . ",false);


где $table_mm массив нужных мне данных.

В итоге в гриде эти данные отражаются вполне нормально а вот разделение по страницам и управление страницами не работает. При нажати кнпки рефрэш в pagingtoolbar данные пропадают. подскажите всю голову уже сломал. куда копать?

Грубо говоря. Мне нужно в зависимости от фильтра подгружать в стор разные наборы данных и использовать механизм постраничного отображения.

С подгрузкой я справляюсь но механизм управления страницами перестаёт работать
Ответить с цитированием
  #2 (permalink)  
Старый 17.12.2012, 14:59
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

store.getProxy().data = myData;
store.load();
// ||
// store.loadPage(1);

???
__________________
"Helo, word!" - 17 errors 56 warnings
Ответить с цитированием
  #3 (permalink)  
Старый 18.12.2012, 05:37
Аспирант
Отправить личное сообщение для XAPuTOH Посмотреть профиль Найти все сообщения от XAPuTOH
 
Регистрация: 17.12.2012
Сообщений: 63

Кажись догнал в чем беда.

В примере стор грузит из массива столько сколько ему нужно в соответствии с настройками pagingtoolbar и т.д.

Во всех других примерах стор грузит из других источников.

В общем случае - в сторе прописан механизм получения данных из определённого источника и он получает столько сколько нужно для данной страницы. Т.е. в момент работы pagingtoolbar в стор загружено столько сколько нужно.

В примере выше - весь объем данных загружен в массив который является источником данных. и стор подгружает из него. Когда я загрузил данные напрямую в стор то весь механизм разделения на страницы рухнул.

как итог для меня видится следующий выход - объявление глобальной переменной myData и грузить данные в неё а потом делать релоад стора.

могу предположить что есть ещё вариант - управлять свойствами и функциями pagingtoolbar - т.е. помимо загрузки из пхп данных еще и его свойства обновлять. но это хз пока как сделать.
Ответить с цитированием
  #4 (permalink)  
Старый 18.12.2012, 10:09
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Ext.Loader.setConfig({
	enabled: true,
	disableCaching: false,
	paths: {
		"Ext.ux": "../../../../../../../ExtJS/ExtJS4/ExtJS4.1.1a/examples/ux"
	}
});

Ext.require([
	"Ext.ux.data.PagingMemoryProxy"
]);

Ext.define("TestModel", {
    extend: "Ext.data.Model",
    idProperty: "id",
    fields: [
        { name: "id", type: "int" },
        { name: "name", type: "string" }
    ]
});

Ext.onReady(function() {
    var
        maxRecordsCount = 50000,
        pageSize = 150,
        createData = function(max) {
            var
                data = [];

            for(var i=0; i<max; ++i)
                data.push( [ i, "Record# "+i ] );

            return data;
        },
        data = createData(maxRecordsCount),
        store = Ext.create("Ext.data.ArrayStore", {
            model: "TestModel",
            pageSize: pageSize,
            proxy: {
                type: "pagingmemory",
                reader: {
                    type: "array"
                }
                //, data: data // need store.load() || store.loadPage()
            }
            //, data: data // store loads data automatically
        }),
        grid = Ext.create("Ext.grid.Panel", {
            store: store,
            columns: [
                { dataIndex: "id", header: "id" },
                { dataIndex: "name", header: "name" }
            ],
            selModel: {
                pruneRemoved: false
            },
            multiSelect: true,
            viewConfig: {
                trackOver: false
            },
            dockedItems: [{
                xtype: "pagingtoolbar",
                dock: "bottom",
                store: store,
                displayInfo: true
            }]
        });

    Ext.create("Ext.window.Window", {
        autoShow: true,
        layout: "fit",
        height: 400,
        width: 1100,
        maximizable: true,
        items: [grid]
    });

    store.getProxy().data = data;

    store.load();
    //store.loadPage(1);
});


P.S. Если Вы посмотрите исходники Ext.ux.data.PagingMemoryProxy (ExtJS/examples/ux/data/PagingMemoryProxy.js), то Вы увидите, что PagingMemoryProxy хранит ВСЕ данные в себе.
__________________
"Helo, word!" - 17 errors 56 warnings

Последний раз редактировалось Ex_Soft, 19.12.2012 в 09:36.
Ответить с цитированием
  #5 (permalink)  
Старый 19.12.2012, 05:46
Аспирант
Отправить личное сообщение для XAPuTOH Посмотреть профиль Найти все сообщения от XAPuTOH
 
Регистрация: 17.12.2012
Сообщений: 63

Спасибо! Разобрался с Вашей помощью!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опять про округление чисел Kefir Общие вопросы Javascript 3 10.01.2012 13:34
И опять о "string". Как изменить строку согласно параметров... andreyua Общие вопросы Javascript 6 13.08.2011 08:29
опять iframe DZHETIGAPA Javascript под браузер 1 19.04.2011 16:22
И опять Mif.Tree... Ice_Haron Элементы интерфейса 0 19.04.2010 15:48
Опять про индексацию Rulya_81 AJAX и COMET 16 19.05.2009 12:49