1

約 10 列のグリッド パネルがあり、データ ストアには約 1000 レコードがあります。表示可能なレコードの数がデータ ストアのレコード数よりも少ないため、グリッド パネルに垂直スクロール バーが表示されます。グリッドが Internet Explorer 9 または Google Chrome で表示されている場合、マウスのスクロール ホイールを使用すると、垂直スクロール バーがすばやくすばやく移動します。しかし、Mozilla Firefox では、スクロールが非常に遅くなります。指を完全に引くたびに、追加のレコード/行が 1 つ、またはそれ以下になります。

どうすればこれを修正できますか?

Mozilla Firefox 14.0.1 を使用しています

17:21 更新.. ページング ツールバーが表示されない

    var store = new Ext.data.Store({

        pageSize: 50,
        // allow the grid to interact with the paging scroller by buffering
        buffered: true,
        // never purge any data, we prefetch all up front
        purgePageCount: 0,
        model: 'Project',
        //proxy: {
        //    type: 'memory'
        //},

        proxy: new Ext.ux.AspWebAjaxProxy({
            url: '/Controls/ProjectList/ProjectListService.asmx/GetProjectList',
            actionMethods: {
                create: 'POST',
                destroy: 'DELETE',
                read: 'POST',
                update: 'POST'
            },
            reader: {
                type: 'json',
                model: 'Project',
                root: 'd'
            },
            headers: {
                'Content-Type': 'application/json; charset=utf-8'
            }
        }),
        autoLoad: true
    });



Ext.define('Ext.ux.AspWebAjaxProxy', {
    extend: 'Ext.data.proxy.Ajax',
    require: 'Ext.data',

    buildRequest: function (operation) {
        var params = Ext.applyIf(operation.params || {}, this.extraParams || {}),
                                request;
        params = Ext.applyIf(params, this.getParams(params, operation));
        if (operation.id && !params.id) {
            params.id = operation.id;
        }

        params = Ext.JSON.encode(params);

        request = Ext.create('Ext.data.Request', {
            params: params,
            action: operation.action,
            records: operation.records,
            operation: operation,
            url: operation.url
        });
        request.url = this.buildUrl(request);
        operation.request = request;
        return request;
    }
});
4

2 に答える 2

3

最初の質問に答えるために、Firefox はバージョン 13 以降、「スムーズ スクロール」をデフォルト設定にしました。ExtJS 4.1.0 ではそれが考慮されていませんでしたが、これは 4.1.1 で処理されます。それを処理するにはアップグレードする必要があります。そうしないと、4.1.1 コードから切り離すことができます。

これを見てください。

于 2012-08-27T23:27:39.777 に答える
1

に役立つ可能性のあるバッファ設定がExt.data.Storeあります。

var store = Ext.create('Ext.data.Store', {
    id: 'store',
    pageSize: 50,
    // allow the grid to interact with the paging scroller by buffering
    buffered: true,
    // never purge any data, we prefetch all up front
    purgePageCount: 0,
    model: 'ForumThread',
    proxy: {
        type: 'memory'
    }
});

http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/buffer-grid.html

私はFirefoxでサンプルをテストしましたが、クロムよりも少し遅いですが、使用可能です。

それでも遅すぎる場合は、ページングをグリッドに追加する必要があります。

http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/paging.html

于 2012-08-27T21:59:26.890 に答える