2

グリッドのbbarとしてPagingToolbarがあります。ツールチップが表示されると、表示されている画面の下にレンダリングされるため、垂直スクロールが表示されますが、表示されると、垂直スクロールがビューポートの代わりに使用されるため、自動的に水平スクロールもツールチップをオーバーフローして表示されます。基本的に2つの質問があります。

  1. 垂直スクロールはビューポート全体を示していますが、bbarのあるグリッドは南の領域のみにあり、グリッドにはすでに垂直スクロール自体があります。その動作を制御するための何らかの構成はありますか?

  2. PagingToolbarのツールチップを無効にする方法私は機能していない次のコードを持っています(グリッド定義、無関係に削除されました)。

initComponent:function(){

        var me = this;

        this.store ='DevPlan';

var paging = Ext.create('Ext.PagingToolbar'、{
            ストア:this.store、
            displayInfo:true、
            displayMsg:'Wyświetlonownioski{0}-{1} z {2}'、
            emptyMsg:「Brakwnioskówdowyświetlenia」
        });

        Ext.each(paging.items.items、function(btn){
            if(btn.getXType()=='button' && btn.tooltip!= undefined){
                Ext.QuickTips.unregister(btn.getId());
            }
        });

        this.bbar=ページング;

this.callParent(arguments);

ツールチップがまだ登録されていないか、ページングツールバーがレンダリングされていないため、上記のコードが機能していない可能性があります。

afterRender:function(){

        this.callParent();

        var items = this.bbar.items.items;
        Ext.each(items、function(btn){
            if(btn.getXType()=='button' && btn.tooltip!= undefined){
                console.log(btn.getId());
                Ext.QuickTips.unregister(btn.getId());
            }
        });
    }

しかし、このコードでは、this.bbarが未定義であることがわかります。なんで?では、bbarはいつレンダリングされますか?

4

2 に答える 2

2

ExtJS4の場合、bbarはツールバー/アイテムを下部にドッキングして適用し、初期化後に設定を解除するための短い方法です。を参照してください。

if (me.bbar) {
    docked.push(initToolbar(me.bbar, 'bottom'));
    me.bbar = null;
}

私はあなたがこのようにそれを行うことができると思います(私はこれがイベントであると思っていたので、コメントはそうです):

afterrender: function(grid) { 
    // 'this' should not be accessible within a eventcallback! If it is you are within the class definition and should use this.on('beforerender', ...) after the callParent() instead!!
    // callParent() should be called within the init of the class, not somewhere else!
    // this.callParent(); 

    var pagebar = grid.down('pagingtoolbar'),
        items = pagebar ? pagebar.items.items : [],
        len = items.length,
        i = 0;
    // don't use each if it is not really necessary!
    for(;i < len; i++) {
        var item = items[i];
        if (item.getXType() === 'button' && item.tooltip != undefined) {
            console.log(item.getId());
            Ext.QuickTips.unregister(item.getId());
        }
    });
}

編集:

最後のコメントに基づく:グリッドのafterRenderメソッドをオーバーライドしないでください。代わりに、aftererenderイベントに登録し、コード例のコメントに記述されているように、呼び出しの親の直後のinitComponent()内でこれを行ってください。

編集2:

各ボタンには、ツールチップをクリアするプライベートメソッドがあります。ご存知かもしれませんが、プライベートメソッドは他のメソッドと同じように呼び出すことができますが、今後のフレームワークバージョンでは完全に変更/削除される可能性があります。それらのほとんどは、APIでも見つかりません。あなたが探している方法はclearTip()

ツールチップを削除する各ボタンインスタンスで呼び出します。それはうまくいくはずです。

私はあなたの最初の質問を完全に監督しました:を使用してビューポートからスクロール動作を削除するautoScroll: falseか、を使用してグリッドからスクロール動作を無効にすることを検討する必要がありますviewConfig: { autoScroll: false, scroll: false }

于 2012-09-02T05:23:56.593 に答える
0

あなたはこのようにすることができます

{
dock : 'bottom',
xtype : 'pagingtoolbar',
store : store,
pageSize : 25,
displayInfo : true,
firstText:null,
prevText:null,
nextText:null,
lastText:null,
refreshText:null,
....
于 2013-10-14T08:38:36.467 に答える