我是使用mvc 4的Ext.net新手。我正在尝试使用treepanel和tab面板创建一个布局。当我在treepanel上的叶节点上的节点时,我想使用ajax作为新选项卡加载页面
首先,我使用以下代码加载带有侦听器的新标签,但它会加载到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>
我已成功使用下面的代码加载带有直接事件的新标签,但我未能做的是获取每个节点的网址。
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?
先谢谢。
答案 0 :(得分:3)
您问题的直接答案是无法将DirectEvent直接附加到节点。
但是使用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