<%@ Page Language="C#" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Register assembly="Ext.Net" namespace="Ext.Net" tagprefix="ext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<link href="http://www.cnblogs.com/http://www.cnblogs.com/resources/css/examples.css" rel="stylesheet" type="text/css" />
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
SiteMapNode siteNode = SiteMap.RootNode;
Ext.Net.TreeNode root = this.CreateNode(siteNode);
TreePanel1.Root.Add(root);
TreePanel1.ExpandAll();
}
//dynamic node creation
private TreeNodeBase CreateNodeWithOutChildren(SiteMapNode siteMapNode)
{
TreeNodeBase treeNode;
if (siteMapNode.ChildNodes != null && siteMapNode.ChildNodes.Count>0)
{
treeNode = new AsyncTreeNode();
}
else
{
treeNode = new Ext.Net.TreeNode();
treeNode.Leaf = true;
}
if (!string.IsNullOrEmpty(siteMapNode.Url))
{
treeNode.Href = this.Page.ResolveUrl(siteMapNode.Url);
}
treeNode.NodeID = siteMapNode.Key;
treeNode.Text = siteMapNode.Title;
treeNode.Qtip = siteMapNode.Description;
return treeNode;
}
//static node creation with children
private Ext.Net.TreeNode CreateNode(SiteMapNode siteMapNode)
{
Ext.Net.TreeNode treeNode = new Ext.Net.TreeNode();
if (!string.IsNullOrEmpty(siteMapNode.Url))
{
treeNode.Href = this.Page.ResolveUrl(siteMapNode.Url);
}
treeNode.NodeID = siteMapNode.Key;
treeNode.Text = siteMapNode.Title;
treeNode.Qtip = siteMapNode.Description;
SiteMapNodeCollection children = siteMapNode.ChildNodes;
if (children != null && children.Count > 0)
{
foreach (SiteMapNode mapNode in siteMapNode.ChildNodes)
{
treeNode.Nodes.Add(this.CreateNode(mapNode));
}
}
return treeNode;
}
</script>
<script type="text/javascript">
var loadPage = function (tabPanel, node) {
var tab = tabPanel.getItem(node.id);
if (!tab) {
tab = tabPanel.add({
id: node.id,
title: node.text,
closable: true,
autoLoad: {
showMask: true,
url: node.attributes.href,
mode: "iframe",
maskMsg: "Loading " + node.attributes.href + "..."
},
listeners: {
update: {
fn: function (tab, cfg) {
cfg.iframe.setHeight(cfg.iframe.getSize().height);
},
scope: this,
single: true
}
}
});
}
tabPanel.setActiveTab(tab);
}
</script>
</head>
<body>
<form id="Form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server" />
<ext:Viewport ID="Viewport1" runat="server">
<Items>
<ext:BorderLayout ID="BorderLayout1" runat="server">
<West Collapsible="true"
Split="true"
MinWidth="175"
MaxWidth="400"
MarginsSummary="5 0 5 5"
CMarginsSummary="5 5 5 5">
<ext:TreePanel
ID="TreePanel1"
runat="server"
Width="300"
Title=""
Icon="ChartOrganisation">
<Listeners>
<Click Handler="if (node.attributes.href) { e.stopEvent(); loadPage(#{Pages}, node); }" />
</Listeners>
</ext:TreePanel>
</West>
<Center MarginsSummary="0 0 0 0">
<ext:TabPanel ID="Pages" runat="server" EnableTabScroll="true" />
</Center>
</ext:BorderLayout>
</Items>
</ext:Viewport>
</form>
</body>
</html>
Web.sitemap
<?xml version="1.0" encoding="utf-8"?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
<siteMapNode title="一级菜单">
<siteMapNode title="二级菜单">
<siteMapNode title="页面" description="页面" url="Default.aspx" />
</siteMapNode>
</siteMapNode>
</siteMap>
<Listeners>
<Click Handler="if (node.attributes.href) { e.stopEvent(); loadPage(#{Pages}, node); }" />
</Listeners>
当点击树的节点时,如果当前节点可以导航, 就添加或激活一个tab页,
两个日期控件范围
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<
ext:DateField
ID
="Start_Date"
runat
="server"
Width
="250"
FieldLabel
="有效期"
Format
="yyyy-MM-dd"
Vtype ="daterange" >
< Listeners >
< Render Handler ="this.endDateField ='#{End_Date}'" />
</ Listeners >
</ ext:DateField >
< ext:DateField ID ="End_Date" runat ="server" Width ="250" FieldLabel ="至" Format ="yyyy-MM-dd"
Vtype ="daterange" >
< Listeners >
< Render Handler ="this.endDateField ='#{Start_Date}'" />
</ Listeners >
</ ext:DateField >
Vtype ="daterange" >
< Listeners >
< Render Handler ="this.endDateField ='#{End_Date}'" />
</ Listeners >
</ ext:DateField >
< ext:DateField ID ="End_Date" runat ="server" Width ="250" FieldLabel ="至" Format ="yyyy-MM-dd"
Vtype ="daterange" >
< Listeners >
< Render Handler ="this.endDateField ='#{Start_Date}'" />
</ Listeners >
</ ext:DateField >