EXTJS Рендеринг сетки с хранилищем данных - PullRequest
4 голосов
/ 15 декабря 2010

У меня есть сетка, созданная с помощью ExtJS, и я отображаю ее в div, который я определяю, когда запрашивается обновление, я просто «очищаю» div, используя JQuery, а затем заново визуализирую сетку, создавая новые объекты каждый раз:

    var grid = new xg.GridPanel({
    store: store,
    columns: [
    ...
    renderTo: 'db-grid'

И затем, чтобы очистить div, я использую это:

    $("#db-grid").empty();

Это хорошо работает для 3 или 4 обновлений, а затем, кажется, загружается очень медленно, я думаю, это потому, что он заново создает все эти объекты, единственное, что меняется каждый раз, это «хранилище». Я получаю это по запросу AJAX, есть ли способ обновить это без создания новой сетки каждый раз?

Я довольно новичок в ExtJS, и я делаю здесь небольшой переход от JQuery, поэтому я использую функцию "empty ()" из JQuery, если вы знаете альтернативу ExtJS, Я был бы рад использовать это вместо

Спасибо!

1 Ответ

4 голосов
/ 15 декабря 2010

Взгляните на методы load(Object options) и reload(Object options) Магазина в http://dev.sencha.com/deploy/dev/docs/.

Пример этой функции можно увидеть в Ext.PagingToolbar.Этот класс содержит кнопку, которая обновляет сетку и ее хранилище, не разрушая сетку каждый раз:

    // private
    doLoad : function(start){
        var o = {}, pn = this.getParams();
        o[pn.start] = start;
        o[pn.limit] = this.pageSize;
        if(this.fireEvent('beforechange', this, o) !== false){
            this.store.load({params:o}); // here is the call you're interested in
        }
    },

doLoad() затем просто вызывается из метода doRefresh():

    doRefresh : function(){
        this.doLoad(this.cursor);
    },

Я включил этот код для полного примера, но на самом деле все, о чем нужно беспокоиться, это методы load () или reload ().Обязательно прочитайте API, чтобы увидеть полный список аргументов, которые можно передать в методы.

...