1

しばらく前に ExtJS ライブラリの学習を開始しましたが、現在は次のようなものを作成したいと考えています。

ブラウザウィンドウがあり、上下に分かれています。
左側には、ディレクトリとサブディレクトリを含む TreePanel があります (深さは 2 レベルのみ)。
右側には、選択したサブディレクトリの内容が出力されます。

インターフェイスの部分はできましたが、ユーザーが左側のサブディレクトリをクリックしたときに右側のコンテンツを変更する方法がわかりません。Ext.Ajax.request でリクエストはできるのですが、右側のコンテンツの更新をトリガーする方法がわかりません。

ところで。私が述べたように、左側は TreePanel で、右側は GripPanel であり、xtype : 'panel' のビューポートにありますが、これはその質問には重要ではないと思います。

助言がありますか?

4

1 に答える 1

1

まず、ユーザーがツリーパネルでノードを選択しているという事実を登録する必要があります。これは次の方法で実行できます。

yourtreepanel.getSelectionModel().on('selectionchange', whattodonext);

ここで、'yourtreepanel' はツリーパネルの名前 (ツリーパネルが変数に割り当てられている場合、そうでない場合は Ext.getCmp('yourtreepanel').getSelecti.... を使用) であり、'whattodonext' は次の場合に呼び出す関数の名前です。ユーザーがノードを選択します。

関数「whattodonext」は次のようになります。

    function whattodonext(){
        node=yourtreepanel.selModel.selNode;
        if(node){
            if(node.isLeaf()){
// this works out what you want to do if the user has selected a valid leaf node


            }else{
// otherwise...put anything you wish to happen here (i.e. if a folder has been selected)

            }

        }   
    }

次の部分は、右側のパネルをコンテンツで更新することです (「mycontentpanel」という名前の場合)。このコンテンツは「mycontent.html」からロードする必要があるとします。

// this works out what you want to do if the user has selected a valid leaf node

次のコードを入力します。

mycontentpanel.load({
url: 'mycontent.html',
params: {
yourparam1:'param1value',
yourparam2:'param2value'
},
nocache: true,
timeout: 30
});

以上です!

params オプションを使用して、提供するコンテンツを決定する特定の POST パラメータを送信できます。

また、問題が発生した場合は、単に 'objectname'.operation.... の代わりに Ext.getCmp('objectname') を使用してオブジェクトを参照してみてください。

幸運を!

于 2010-08-24T10:59:50.667 に答える