2012-10-18 85 views
1

我想根據輸入路徑顯示我的所有目錄。到目前爲止,我實現了樹視圖。我怎樣才能使複選框使Asp.net treeview?如何在Asp.net中使用複選框構建Treeview

這裏是我的代碼

protected void ddl_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    // ListDirectory(tvTreeView, Server.MapPath("~/")); 
    DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/")); 
    TreeNode mainNode = new TreeNode(); 

    mainNode.Text = dir.Name; 
    mainNode.Checked = true; 
    mainNode.NavigateUrl = "~/" + dir.Name; 
    TreeView1.Nodes.Add(mainNode); 
    foreach (DirectoryInfo subDir in dir.GetDirectories()) 
    { 
     TreeNode parentNode = new TreeNode(); 

     parentNode.Text = subDir.Name; 
     parentNode.NavigateUrl = "~/" + dir.Name + "/" + subDir.Name; 


     foreach (FileInfo file in subDir.GetFiles()) 
     { 
      TreeNode subNode = new TreeNode(); 


      subNode.Text = file.Name; 
      subNode.NavigateUrl = "~/" + dir.Name + "/" + subDir.Name + "/" + file.Name; 

      //Add it to the parent node 
      parentNode.ChildNodes.Add(subNode); 
     } 

     TreeView1.Nodes[0].ChildNodes.Add(parentNode); 
    } 
} 

回答

0

沒有完全消化你的代碼,我假設你有(和沒有狀態)的問題,就是樹僅顯示子文件夾和文件中的一個水平在這些文件夾中。

這是recursion的主要用例。

如果這是你的問題,那麼你就可以用類似下面的遞歸解決這個問題(注意 - 這是即席 - 所以用它作爲基礎,用一粒鹽服用):

private void AddNodeForDirectory(DirectoryInfo directory, TreeNode directoryNode) 
{ 
    foreach (DirectoryInfo subDirectory in directory.GetDirectories()) 
    { 
     TreeNode subDirectoryNode = new TreeNode 
     { 
      Text = subDirectory.Name, 
      NavigateUrl = // some path... I leave this to you 
     }; 

     foreach (FileInfo file in subDirectory.GetFiles()) 
     { 
      TreeNode fileNode = new TreeNode 
      { 
       Text = file.Name, 
       NavigateUrl = // some path... I leave this to you 
      }; 

      subDirectoryNode.ChildNodes.Add(fileNode); 
     } 

     directoryNode.ChildNodes.Add(subDirectoryNode); 

     // Here is the recursion 
     this.AddNodeForDirectory(subDirectory, subDirectoryNode); 
    } 
} 

這個想法是,你調用方法,傳遞你的根目錄信息和根treenode,它遞歸地填充樹,通過深入到你的目錄信息。還要注意,遞歸會導致堆棧溢出,所以你應該知道危險。

0

將您的樹視圖的CheckBoxes屬性設置爲true。

treeView1.CheckBoxes = true;