[ASP.NET]Treeview 控件显示服务端目录文件夹及文件
使用UserControl实现。
同时在用户控件上定义了委托,以实现与基页面的事件相结合。
VS2005 (Asp.net Ajax)
前端代码:![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ServerAppFilePath.ascx.cs" Inherits="UserControl_ServerFilePath"%>
2
<div style="width:400px; background-color:#ffffff; border-right: black thin solid; border-top: black thin solid; border-left: black thin solid; border-bottom: black thin solid;">
3
<asp:Panel ID="pnlTreeview" runat="server" Height="400px" Width="400px" ScrollBars="Auto" BackColor="White">
4
<asp:TreeView ID="treeFileView" runat="server" ImageSet="XPFileExplorer" NodeIndent="15" ShowLines="True" OnSelectedNodeChanged="treeFileView_SelectedNodeChanged">
5
<ParentNodeStyle Font-Bold="False" />
6
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
7
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px"
8
VerticalPadding="0px" />
9
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px"
10
NodeSpacing="0px" VerticalPadding="2px" />
11
</asp:TreeView>
12
</asp:Panel>
13
</div>
后台代码:
![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
//----------------------------------------------------------------------
2
// Ryan Wei
3
// Date:2008.05.08
4
//----------------------------------------------------------------------
5
// Description:
6
//----------------------------------------------------------------------
7
using System;
8
using System.Data;
9
using System.Configuration;
10
using System.Collections;
11
using System.Web;
12
using System.Web.Security;
13
using System.Web.UI;
14
using System.Web.UI.WebControls;
15
using System.Web.UI.WebControls.WebParts;
16
using System.Web.UI.HtmlControls;
17
using System.IO;
18![](/Images/OutliningIndicators/None.gif)
19
//委托
20
public delegate void SelectedNodeChangedHandler(object sender, EventArgs e);
21![](/Images/OutliningIndicators/None.gif)
22
public partial class UserControl_ServerFilePath : System.Web.UI.UserControl
23![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
24![](/Images/OutliningIndicators/ContractedSubBlock.gif)
Property#region Property
25
private string selectedFilePath;
26
public string SelectedFilePath
27![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
28![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ selectedFilePath = value; }
29![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return selectedFilePath; }
30
}
31
#endregion
32![](/Images/OutliningIndicators/InBlock.gif)
33
protected void Page_Load(object sender, EventArgs e)
34![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
35
if (!Page.IsPostBack)
36![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
37
TreeNode tn = new TreeNode();
38
//Root Name
39
tn.Text = "Root";
40
getDirectories(Server.MapPath("../Publish"), tn);
41
treeFileView.Nodes.Add(tn);
42
}
43
}
44![](/Images/OutliningIndicators/InBlock.gif)
45![](/Images/OutliningIndicators/ContractedSubBlock.gif)
Control Event#region Control Event
46![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
47
/// 选择节点变化时
48
/// </summary>
49
/// <param name="sender"></param>
50
/// <param name="e"></param>
51
protected void treeFileView_SelectedNodeChanged(object sender, EventArgs e)
52![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
53
SelectedFilePath = treeFileView.SelectedValue;
54
this.OnSelected(e);
55
}
56
#endregion
57![](/Images/OutliningIndicators/InBlock.gif)
58![](/Images/OutliningIndicators/ContractedSubBlock.gif)
Static Functions#region Static Functions
59![](/Images/OutliningIndicators/InBlock.gif)
60![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
61
/// 循环遍历获得某一目录下的所有文件信息
62
/// </summary>
63
/// <param name="path">目录名</param>
64
/// <param name="tn">树节点</param>
65
private static void getDirectories(string path, TreeNode tn)
66![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
67
string[] fileNames = Directory.GetFiles(path);
68
string[] directories = Directory.GetDirectories(path);
69![](/Images/OutliningIndicators/InBlock.gif)
70
//先遍历这个目录下的文件夹
71
foreach (string dir in directories)
72![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
73
TreeNode subtn = new TreeNode();
74
subtn.Value = dir;
75
subtn.Text = GetShorterFileName(dir);
76
subtn.ImageUrl = "../Images/doc.png";
77
subtn.Expanded = false;
78
getDirectories(dir, subtn);
79
tn.ChildNodes.Add(subtn);
80
}
81![](/Images/OutliningIndicators/InBlock.gif)
82
//再遍历这个目录下的文件
83
foreach (string file in fileNames)
84![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
85
TreeNode subtn = new TreeNode();
86
if (".application".IndexOf(file.Substring(file.LastIndexOf(".") + 1)) > -1)
87![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
88
subtn.ImageUrl = "../Images/file.png";
89
subtn.Value = file;
90
subtn.Text = GetShorterFileName(file);
91
//subtn.ShowCheckBox = true;
92
tn.ChildNodes.Add(subtn);
93
}
94
}
95
}
96![](/Images/OutliningIndicators/InBlock.gif)
97![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
98
/// 滤去文件名前面的路径
99
/// </summary>
100
/// <param name="filename"></param>
101
/// <returns></returns>
102
private static string GetShorterFileName(string filename)
103![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
104
return Path.GetFileName(filename);
105
}
106
#endregion
107![](/Images/OutliningIndicators/InBlock.gif)
108![](/Images/OutliningIndicators/ContractedSubBlock.gif)
委托事件#region 委托事件
109
public event SelectedNodeChangedHandler Selected;
110![](/Images/OutliningIndicators/InBlock.gif)
111
protected void OnSelected(EventArgs e)
112![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
113
if (Selected != null)
114![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
115
Selected(this, e);
116
}
117
}
118
#endregion
119
}
120![](/Images/OutliningIndicators/None.gif)
121
同时在用户控件上定义了委托,以实现与基页面的事件相结合。
VS2005 (Asp.net Ajax)
前端代码:
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
后台代码:
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/None.gif)
21
![](/Images/OutliningIndicators/None.gif)
22
![](/Images/OutliningIndicators/None.gif)
23
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/dot.gif)
24
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
28
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
94
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
95
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
109
![](/Images/OutliningIndicators/InBlock.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/InBlock.gif)
112
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
117
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
118
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
119
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
120
![](/Images/OutliningIndicators/None.gif)
121
![](/Images/OutliningIndicators/None.gif)