2014-02-21 30 views
1

我遇到了Ext.net TabPanel的問題。當應用程序重建後第一次打開帶有選項卡面板的頁面時,會拋出Uncaught TypeError: Object [object Object] has no method 'getComponent'。每次應用程序重建時都會出現問題,然後在刷新頁面後消失。這裏的JS代碼,我用它來創建一個標籤:Ext.net TabPanel問題

@X.XScript().ScriptBlock(@" 
<script> 
    var addMainTab = function (tabPanel, id, url, title) { 

     var tab = tabPanel.getComponent(id); 

     if (!tab) { 
      tab = tabPanel.add({ 
       id  : id, 
       title : title, 
       closable : true, 
       loader : { 
        url  : url, 
        renderer : 'frame', 
        loadMask : { 
         showMask : true, 
         msg  : 'Loading ' + url + '...' 
        } 
       } 
      }); 
     } 

     tabPanel.setActiveTab(tab); 
    } 
</script> 
"); 

這就是所謂的菜單項,點擊:

menuItem.Listeners.Click.Handler = "addMainTab(#{MainTabPanel}, 'someId', 'someurl', 'Tab title')"; 

當我想通了一些功能不納入定義(getComponent,addTab等) TabPanel在重新編譯後首次加載頁面。有誰知道它爲什麼會發生以及如何修復?我會很感激任何幫助。

回答

1

請勿在剃刀代碼中使用#{控制}名稱。使用App.ControlNameHere來引用有問題的對象。 #{control}僅用於webforms。

+1

正確。但是在某些時候(我不記得確切的版本),我們添加了一個將#{controlID}轉換爲Razor下的「App.ControlID」的更改。儘管如此,在Razor下使用依然沒有意義。 –

0

ExtJS框架文件在代碼執行之前是否被加載?

+0

是的,文件被加載,但在第一次加載時TabPanel對象中缺少函數。頁面刷新修復了這個問題。但在下一次重建之後,它會再次發生。 – Alexander

0

看看this question,我提到我如何將標籤面板添加到主頁面。

+0

感謝分享。但我的問題是在這一行: var tab = tabPanel.getComponent(id); getComponent函數在頁面的第一次加載時只是丟失。 – Alexander