0

ビューにツリー パネルとそれに対応するコントローラーがあります。何が起こっているかというと、itemdblclick 用と itemmove 用の 2 つのコントローラーがあります。itemdblclick は正常に動作していますが、itemmove のコントローラーを追加すると、itemmove は動作しますが、itemdbclick は動作しません。itemmoveコントローラーを削除すると、itemdblclickが機能します。混乱しないことを願っています :) 簡単に言うと、2 つのコントローラーは別々に動作していますが、一緒には動作していません。

  1. ここで何が間違っているのか教えてください。

  2. また、コントローラーの関数 editRegion で、getStore.load() メソッドを使用してツリーをリロードしようとしていますが、firebug でストアが呼び出されていることを確認できても、ツリーはロードされません。

編集:

ツリー ノードをダブルクリックしてフォームを開き、フォームを閉じると、ツリー パネルが再読み込みされます。これは私が editregion 関数で起こりたいことです

意見

{
            xtype : 'treepanel',
            title : '',
            id : 'hierarchyTree',
            border : false,
            alias : 'widget.hierarchyTree',
            height : 1000,
            viewConfig : {
                enableDD : true,
                plugins : {
                    ptype : 'treeviewdragdrop'
                }
            },
            collapsible : false,
            useArrows : true,
            rootVisible : false,
            store : Ext.create('App.store.HierarchyTree'),
            displayField : 'Title',
            multiSelect : false,
            singleExpand : false,


        }

コントローラ

refs : [{
    ref : 'myHierarchyTree',
    selector : '#hierarchyTree'
}
    init : function() {

    this.getHierarchyTreeStore().load();

'#hierarchyTree' : {
            itemdblclick : this.itemdblclick

        },
        '#hierarchyTree' : {
            itemmove : this.itemmove

        }

itemdblclick : function(view, record, level) {


    if (record.get('LevelID') == 1) {

        this.erWin = Ext.create('App.view.EditRegions');
        var f = this.getEditregionform().getForm();
        f.loadRecord(record);
        this.erWin.showWin();
    } 
else if (record.get('LevelID') == 2) {

        this.eaWin = Ext.create('App.view.EditAreas');
        var f = this.getEditareaform().getForm();
        f.loadRecord(record);
        this.eaWin.showWin();
    }

itemmove : function(v, oldParent, newParent, index, eOpts) {
    var nodeID = v.data.id;
    var oldParent = oldParent.data.id;
    var newParent = newParent.data.id;
    var index = index;
    var level = v.data.LevelID;

Ext.Ajax.request({
        url : 'data/Locations.aspx',
        params : {

            mode : 'MOVENODE',
            currentNode : nodeID,
            oldParentNode : oldParent,
            newParentNode : newParent

        },
        success : function() {
            alert(LANG.SUC);
            Ext.getStore('HierarchyTree').load();

        },
        failure : function() {

        }
    });


editRegion : function(button, record) {

    var fp = button.up('form');

    if (fp.getForm().isValid()) {
        fp.getForm().submit({
            url : 'data/Locations.aspx',
            params : {
                mode : 'EDITREGION',
                userID : ME.UserID,
                RegionID : ME.RegionID
            },
            success : function(response) {
                alert(LANG.SUC);
                this.getHierarchyTreeStore().load();


            },
            failure : function(response) {
                alert('Try again');
            }
        });
    }
}
4

2 に答える 2

1

それらを個別に追加すると、最初のリスナー オブジェクトがオーバーライドされます。

修理:

       '#hierarchyTree' : {
            itemdblclick : this.itemdblclick,
            itemmove : this.itemmove
        },

店舗が同じかどうかを確認する必要があります。コントローラーが1つのストアと別のパネルを初期化すると思うので、IDを確認してください。this.getHierarchyTreeStore().idツリーパネルのものと等しいかどうかを確認してください。のようなボタンから移動できますbutton.up().down('treepanel').getStore().id。それらが異なる場合は、2 番目の方法を使用してストアを取得する必要があります。

于 2012-09-07T15:14:57.567 に答える
0

ツリーとフォームは完全に異なるビューであるため、upとdownを使用すると正しいビューが参照されないため、次のコードを実行してみました

    var view = Ext.widget('hierarchy');
view.down('treepanel').getStore.load();

現在、ストアが再読み込み中ですが、エラーが発生しています

TypeError: view.down("treepanel") is null

view.down('treepanel').getStore.load();
于 2012-09-07T16:02:38.933 に答える