2013-07-05 2 views
1

Я новичок в Ext.net с mvc 4. Я пытаюсь создать макет с помощью панели дерева и панели вкладок. Когда я узел на листовом узле на панели дерева, я хочу загрузить страницу с помощью 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 к узлам.

Но использование события Select TreePanel действительно то, что вам нужно. Вы можете изменить Url DirectEvent в своем обработчике Before.

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

моя ошибка, я использовал тот же url. спасибо, это решило это :) –

Смежные вопросы