0

LiveGride で約 500 行を表示する必要があります。My 関数は Json Array を返すのに約 6 分かかります。Grid は約 2 分間ロードしてから停止します。デバッグモードでチェックすると、グリッドは最初に失敗しますが、関数はまだ実行されており、最後に戻ります。

プログラムは少ないデータで正常に動作します

var Grid = new Ext.ux.grid.livegrid.EditorGridPanel

({
title: 'Report Details',
id: 'GridId',
ds: Store,
cm: CM,

view: new Ext.ux.grid.livegrid.GridView({
nearLimit: 3,

loadMask: {
            msg: 'Loading Records PleaseWait.....!'
        },

emptyText: 'No Records Found'
    }),

stripeRows: true,

border: true,
    width: screen.width - 90,
    height: 340,

loadMask: {
        msg: ' Loading Records Please Wait......!'
    },
    clicksToEdit: 1,
    plugins: filters,

selModel: new Ext.ux.grid.livegrid.RowSelectionModel(),

});
4

1 に答える 1

1

Ext.data.HttpProxy.doRequest 関数のオーバーライドを適用して、Store.load(params) とストアの作成からのタイムアウト属性を受け入れました。

    Ext.override(Ext.data.HttpProxy, {
    doRequest: function (action, rs, params, reader, cb, scope, arg) {
        var timeout = 30000;
        if (scope.timeout > 0) timeout = scope.timeout;
        if (arg.timeout > 0) timeout = arg.timeout;
        var o = {
            method: (this.api[action]) ? this.api[action]['method'] : undefined,
            request: {
                callback: cb,
                scope: scope,
                arg: arg
            },
            reader: reader,
            callback: this.createCallback(action, rs),
            scope: this,
            timeout: timeout
        };

        // If possible, transmit data using jsonData || xmlData on Ext.Ajax.request (An installed DataWriter would have written it there.).
        // Use std HTTP params otherwise.
        if (params.jsonData) {
            o.jsonData = params.jsonData;
        } else if (params.xmlData) {
            o.xmlData = params.xmlData;
        } else {
            o.params = params || {};
        }
        // Set the connection url.  If this.conn.url is not null here,
        // the user must have overridden the url during a beforewrite/beforeload event-handler.
        // this.conn.url is nullified after each request.
        this.conn.url = this.buildUrl(action, rs);

        if (this.useAjax) {

            Ext.applyIf(o, this.conn);

            // If a currently running read request is found, abort it
            if (action == Ext.data.Api.actions.read && this.activeRequest[action]) {
                Ext.Ajax.abort(this.activeRequest[action]);
            }
            this.activeRequest[action] = Ext.Ajax.request(o);
        } else {
            this.conn.request(o);
        }
        // request is sent, nullify the connection url in preparation for the next request
        this.conn.url = null;
    }
});
于 2014-07-22T18:24:13.153 に答える