Ext.net TabPanel问题

问题描述:

我遇到了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在重新编译后首次加载页面。有谁知道它为什么会发生以及如何修复?我会很感激任何帮助。

请勿在剃刀代码中使用#{控制}名称。使用App.ControlNameHere来引用有问题的对象。 #{control}仅用于webforms。

+1

正确。但是在某些时候(我不记得确切的版本),我们添加了一个将#{controlID}转换为Razor下的“App.ControlID”的更改。尽管如此,在Razor下使用依然没有意义。 –

ExtJS框架文件在代码执行之前是否被加载?

+0

是的,文件被加载,但在第一次加载时TabPanel对象中缺少函数。页面刷新修复了这个问题。但在下一次重建之后,它会再次发生。 – Alexander

看看this question,我提到我如何将标签面板添加到主页面。

+0

感谢分享。但我的问题是在这一行: var tab = tabPanel.getComponent(id); getComponent函数在页面的第一次加载时只是丢失。 – Alexander