<asp:TreeView ID="tvKlasorler" runat="server" ImageSet="Arrows" PathSeparator="|"
ShowCheckBoxes="Leaf" >
<HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
<SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px"
VerticalPadding="0px" />
<NodeStyle Font-Names="Verdana" ForeColor="Black" HorizontalPadding="5px"
NodeSpacing="0px" VerticalPadding="0px" />
</asp:TreeView>
CODE BEHIND:
protected void Page_Load(object sender, EventArgs e)
{
TreeNode root = new TreeNode("KÖK-Root"); // EN ÜST TUTUCU
DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/"));
foreach (DirectoryInfo g in dir.GetDirectories())
{
//SVN ne Resharper klasörleri hariç
if (!f_SVNDizinimi(g) && !f_ResharperDizinimi(g) )
{
// Bu klasörü ve altındaki klasörleri Root Node'a ekle
root.ChildNodes.Add(f_GetNode(g));
}
}
tvKlasorler.Nodes.Add(root);
}
private TreeNode f_GetNode(DirectoryInfo altDizin)
{
//Bu klasörü NODE olarak oluşturalım. (Ağacın bir dalı olsun)
TreeNode tn = new TreeNode(altDizin.Name);
//Bu dalın alt dalları(klasörleri) varmı? Varsa, SVN ve RESHARPER olmayanları çekelim
DirectoryInfo[] yeniDizi = f_AltDizinleriGetir(altDizin.GetDirectories());
//Eğer alt dalları yoksa bir üst dala eklenmek üzere geri gönderelim
if (yeniDizi.Count() == 0)
{
return new TreeNode(altDizin.Name);
}
else //Eğer alt dalları varsa
{
//Alt dalların(klasörlerin) herbirini dolaşalım ve bulunduğumuz dala ekleyelim
foreach (DirectoryInfo info in yeniDizi)
{
tn.ChildNodes.Add(f_GetNode(info));
}
return tn;
}
}
private DirectoryInfo[] f_AltDizinleriGetir(DirectoryInfo[] dirs)
{
return dirs.Where(d => ((f_Dizinmi(d) && !f_Gizlimi(d) && !f_SVNDizinimi(d) && !f_ResharperDizinimi(d)))).Select(p => p).ToArray();
}
private bool f_Dizinmi(DirectoryInfo g)
{
return ((g.Attributes & FileAttributes.Directory) == FileAttributes.Directory);
}
private bool f_Gizlimi(DirectoryInfo g)
{
return ((g.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden);
}
private bool f_SVNDizinimi(DirectoryInfo g)
{
return g.Name.Equals(".svn");
}
private bool f_ResharperDizinimi(DirectoryInfo g)
{
return g.Name.Equals("_ReSharper");
}