2016-06-08 52 views
0

我试图从我的根目录中的一个文件夹(称为文件夹)构建文件和文件夹的树视图。Treeview在C#中不工作asp.net

我的C#代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.IO; 

public class Default2: Seisan.DefaultTemplate 
{ 
protected void Page_Load(object sender, EventArgs e){ 
    if (!this.IsPostBack){ 
     DirectoryInfo rootInfo = new DirectoryInfo(Server.MapPath("~/Folders/")); 
     this.PopulateTreeView(rootInfo, null); 
    } 
} 

private void PopulateTreeView(DirectoryInfo dirInfo, TreeNode treeNode) 
{ 
foreach (DirectoryInfo directory in dirInfo.GetDirectories()) 
{ 
    TreeNode directoryNode = new TreeNode(directory.Name, directory.FullName); 

    if (treeNode == null) 
    { 
     TreeView.Nodes.Add(directoryNode); 
    } 
    else 
    { 
     treeNode.ChildNodes.Add(directoryNode); 
    } 

    //Get all files in the Directory. 
    foreach (FileInfo file in directory.GetFiles()) 
    { 
     TreeNode fileNode = new TreeNode(file.Name, file.FullName, "_blank", (new Uri(Server.MapPath("~/"))).MakeRelativeUri(new Uri(file.FullName)).ToString()); 
     directoryNode.ChildNodes.Add(fileNode); 
    } 

    PopulateTreeView(directory, directoryNode); 
    } 
} 

和我的树视图asp.Net代码:

<asp:TreeView ID="TreeView" runat="server" ImageSet="XPFileExplorer" NodeIndent="15"> 
    <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" /> 
     <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px" NodeSpacing="0px" VerticalPadding="2px"></NodeStyle> 
       <ParentNodeStyle Font-Bold="False" /> 
     <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px" 
        VerticalPadding="0px" /> 
</asp:TreeView> 

运行时,我得到这个错误:

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0120: An object reference is required for the non-static field, method, or property 'System.Web.UI.WebControls.TreeView.Nodes.get'

Source Error:

Line 43: {

Line 44: TreeView.Nodes.Add(directoryNode);

Line 45: }

Line 46: else

虽然Treeview是在asp.Net窗体中声明的。我不知道这里有什么问题。任何帮助是极大的赞赏。由于

+0

您需要创建一个根节点并开始向其添加节点。 44行没有任何意义。 – Vlad

+0

第44行应将根节点添加到TreeView。然后出现子节点的else语句。 –

+0

您的代码中的TreeView是类的名称,而不是您的TreeView实例的名称。不好的选择来命名你的treeview控件。叫它MyTreeView什么的。 – Vlad

回答

0
Server.MapPath("~/Folders/") 

将寻找一个文件夹,名为文件夹ASP.NET项目内:

Folders folder inside the web application project

我所做的一切就是确保我有我的项目在此文件夹与一对夫妇的子文件夹,它的工作很好:

输出在浏览器中:

ASP.NET TreeView control