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 回答