2013-07-05 33 views
1

我是使用mvc 4的Ext.net的新手。我嘗試使用treepanel和選項卡面板創建佈局。當我在treepanel上的一個葉節點上的節點,我想要使用ajax作爲新標籤加載一個頁面在ext.net的特定節點上使用直接事件treepanel

起初,我使用下面的代碼來加載新的標籤與偵聽器,但它加載在iframe中。我希望它作爲一個div加載,但我無法使它工作,所以我改爲使用直接事件。

<script> 
var mainContainerAddTab = function (tabPanel, id, url, menuItem) { 
    var tab = tabPanel.getComponent(id); 

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

     tab.on('activate', function (tab) { 
      var panel = App.MenuTreePanel; 
      panel.getSelectionModel().select(panel.getStore().getNodeById(id)); 
     }); 
    } 

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

我已經用下面的代碼加載直接事件,但我所不能做的就是讓每個節點的URL的新選項卡成功。

X.TreePanel() 
.ID("MenuTreePanel") 
.Model(Html.X().Model() 
    .Fields(
     new ModelField("url") 
    ) 
) 
.Root(
    X.Node().Text("Menu").Expanded(true).Children(
     X.Node() 
      .NodeID("ndGadgetTracker") 
      .Text("Gadget Tracker") 
      .Leaf(true) 
      .CustomAttributes(c => { c.Add(new ConfigItem("url", Url.Action("create", "gadgettracker", null, "http"))); }), 
    ) 
) 
.DirectEvents(tpde => 
{ 
    tpde.Select.Url = Url.Action("create", "gadgettracker"); 
}) 

那麼,有沒有辦法在節點中製作directevents?

以前感謝。

回答

3

你的問題的直接答案是沒有辦法將DirectEvents直接附加到節點上。

但是使用TreePanel的Select事件真的是你需要的。您可以在其Before處理程序中修改DirectEvent的Url。

tpde.Select.Url = Url.Action("create", "gadgettracker"); 
tpde.Select.Before = "o.url = record.get('url');" // "record" is a selected node 
+0

o是指什麼物體?我試過了,但沒有看到它作爲url或url的參數傳遞。 –

+0

我的錯誤,我使用了相同的網址。謝謝,這解決了它:) –

相關問題