0

すでに読み込まれているページに列を動的に追加する必要があります。列は、.ascxページがロードされた後に(ユーザーの操作によって)作成されるオブジェクトによって表されます。JavaScript側では、TabPanelを備えたパネルがあります。

var reportPanel = new Ext.Panel({
    layout: 'fit',
    items: [
        new Ext.TabPanel({
            id: 'reportTabs',
            renderTo: 'reportTabContainer',
            activeTab: 0,
            autoHeight: true,
            minHeight: 600,
            plain: true,
            stateful: true,
            deferredRender: false,//allows both reports to run at once
            defaults:
                {
                    autoHeight: true
                },
            items: tabsConfig
        })
    ]
});

};

tabsConfigのアイテムは次のようになります。

{{ id: 'totalOperation', title: 'Total Operation', autoLoad: {{url: '" +Url.Action("Detail","OverallReport") +"', params: 'null', scripts: true,  timeout: '9000000', method: 'POST'}}

私の問題は、列オブジェクトが作成されたら、特定のAJAX呼び出しの後にascxページ(別名extJSpanel)を再レンダリングする必要があることです。panel.removeAll(true)同様に試しましpanel.doLayout(false,true)たが、パネル内の要素が削除されたり、ページが更新されたりすることはありません。

要するに、コントローラーへのAJAX呼び出しの前に.ascxページを破棄し、AJAX呼び出しの戻りにascxコントロールを再入力させる必要があります(を使用してreturn PartialView(...))。任意の提案をいただければ幸いです。

4

1 に答える 1

0

私の質問に答えました-この小さなコードスニペットはそれを解決しました:

var contentPanel = Ext.getCmp('totalOperation');
contentPanel.autoLoad = {
    url: 'URL path of controller method'
};
contentPanel.doAutoLoad();
于 2012-12-20T16:17:19.553 に答える