ASP.NET Tutorial/Data Binding/TreeView
Содержание
Fibonacci Tree On Demand
<source lang="csharp">
<%@ Page Language="C#" Title="Fibonacci Tree On Demand" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void PopulateNode(Object source, TreeNodeEventArgs e) {
double nodeText = double.Parse(e.Node.Text); double nodeValue = double.Parse(e.Node.Value); TreeNode newNode = new TreeNode(nodeValue.ToString(), (nodeText + nodeValue).ToString()); newNode.PopulateOnDemand = true; e.Node.ChildNodes.Add(newNode);
}
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server" /> <body>
<form id="form1" runat="server">
Fibonacci Tree
<asp:TreeView ID="_fibonacciTree" OnTreeNodePopulate="PopulateNode" runat="server" ExpandDepth="1"> <Nodes> <asp:TreeNode Text="1" Value="1"> <asp:TreeNode PopulateOnDemand="true" Text="1" Value="2" /> </asp:TreeNode> </Nodes> </asp:TreeView>
</form>
</body> </html></source>
On demand file
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="OnDemandFiles" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
<asp:TreeView ID="TreeView1" OnTreeNodePopulate="PopulateNode" runat="server" ExpandDepth="0"> <Nodes> <asp:TreeNode PopulateOnDemand="True" Text="Demos" Value="Demos"></asp:TreeNode> </Nodes> </asp:TreeView>
</form>
</body> </html> File: Default.aspx.cs using System; using System.Collections; using System.Data; using System.Data.rumon; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; public partial class OnDemandFiles : System.Web.UI.Page {
static readonly char[] _slashArray = new char[] { "/" }; protected void PopulateNode(Object source, TreeNodeEventArgs e) { TreeNode node = e.Node; if (node.Value == "Demos") node.Value = "~/"; String rootDirectory = Request.MapPath("~/", Request.ApplicationPath, false); String fullPath = Request.MapPath(node.Value, Request.ApplicationPath, false); if (fullPath.StartsWith(rootDirectory) == false) { return; } String[] dirs = Directory.GetDirectories(fullPath); foreach (String dir in dirs) { String virtualDir = node.Value.TrimEnd(_slashArray) + "/" + Path.GetFileName(dir); TreeNode newNode = new TreeNode(Path.GetFileName(dir), virtualDir); if (Directory.GetFiles(dir).Length > 0 || Directory.GetDirectories(dir).Length > 0) { newNode.PopulateOnDemand = true; } node.ChildNodes.Add(newNode); } String[] files = Directory.GetFiles(fullPath); foreach (String file in files) { TreeNode newNode = new TreeNode(Path.GetFileName(file), Path.GetFileName(file)); node.ChildNodes.Add(newNode); } }
}</source>
The ASP.NET 3.5 Framework includes two hierarchical DataBound controls
<source lang="csharp">
Menu: Displays data items in a static or dynamic menu. TreeView: Displays data items in a tree. <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <body>
<form id="form1" runat="server">
TreeView
<asp:TreeView id="CheckBoxList1" DataSourceId="srcData" Runat="server" />
Menu
<asp:Menu id="BulletedList1" DataSourceId="srcData" Runat="server" />
<asp:XmlDataSource id="srcData" DataFile="~/Data.xml" XPath="/movies/*" Runat="server" /> </form>
</body> </html> File: Data.xml <movies>
<Adventure> <StarWars /> <JurassicPark /> <IndependenceDay /> </Adventure> <Animation> <IceAge /> <Shrek /> </Animation> <Drama> <Titanic /> <Ghost /> <ForrestGump /> </Drama> <Horrer> <Jaws /> <TheRing /> </Horrer>
</movies></source>