Treeview ile Sitemizin dizin ve dosyalarının gösterimi

Bu yazımda sitemizin bulunduğu dizin içerisinde bulunan klasör ve dosya yapılarını (Hiyerarşik yapıyı) treeview kontrolu aracılığıyla göstermeye çalışacağım.

Merhabalar

Bu yazımda sitemizin bulunduğu dizin içerisinde bulunan klasör ve dosya yapılarını (Hiyerarşik yapıyı) treeview kontrolu aracılığıyla göstermeye çalışacağım. Daha çok yönetici panelinde kullanabileceğimiz bir uygulama yada oluşturduğumuz resim dizini içerisindeki resimleri gösteren bir uygulama da yapabiliriz.

Şimdi uygulamamızı yapmaya başlayalım.

İlk olarak bir websitesi oluşturdum. Oluşturduğum site içerisindeki bir sayfaya treeview kontrolünü sürükleyip bırakıyorum. Daha sonra sayfanın Page load ksımına gelerek aşağıdaki kodları yazıyoruz.


if (!Page.IsPostBack) 

        {

            // Uygulamamızın fiziksel yolunu alarak treviewin kök node unu oluşturuyoruz.

            TreeNode root = new TreeNode(Request.PhysicalApplicationPath);

            root.Text = "My Website";

            TreeViewSiteExplorer.Nodes.Add(root);



            // bu iki method dizinleri ve dosyaları tarıyor.

            GetSubDirectories(Request.PhysicalApplicationPath, root);

            GetFiles(Request.PhysicalApplicationPath, root);

        }



Request.PhysicalApplicationPath ile websitemizin fiziksel yolunu (C:UsersCodeDocuments... gibi bir string) alıyoruz. Şimdi yukarıda geçen sitemizin kök dizininde bulunan dosya ve klasörleri tarayacak olan methodları yazmaya başlıyalım. Bu methodlar recursive methodlar olacak. Recursive method kendi kendisini çağıran methoddur. Recursive yapı ile iç içe olan bütün yapıları control edebiliyoruz.
Şimdi dizinleri yani klasörleri ekleyen method yazalım.


private void GetSubDirectories(string path,TreeNode parentNode) 

    {

        // verilen path de olan bütün dizinlerin yollarını alıyoruz.

        string[] dirs = Directory.GetDirectories(path);



        if (dirs.Length > 0) 

        {

            foreach (string dir in dirs)

            {

                TreeNode foldernode = new TreeNode();

                // dir burada bulunan dizinin(klasör) tam yolu olduğu için burada kesme yapıyoruz ve sadece klasör ismini alıyoruz

                foldernode.Text = dir.Substring(path.Length);

                parentNode.ChildNodes.Add(foldernode);

                // dizin hepsinin kapalı olarak gelmesini sağlar

                parentNode.CollapseAll();

                // dizin içierisinde dizin barındırabileceği için bunuda kontrol ediyoruz.Recursive yapı

                GetSubDirectories(dir, foldernode);

                // bu dizinler altında dosya olup olmadığınıda kontrol ediyoruz alt kısımdaki method ile

                GetFiles(dir, foldernode);

            }

        }



    }



Dizinleri tararken dikkat ederseniz, GetFiles() method ile dizin içierisindeki dosyalarıda belirliyor. Şimdi dosyaları ekleyen methodumuzu yazalım.


private void GetFiles(string path,TreeNode parentnode) 

    {

        string[] files = Directory.GetFiles(path);



        if (files.Length == 0 && parentnode.ChildNodes.Count == 0)

        {

            TreeNode bosnode = new TreeNode("Dizin BOŞ");

            parentnode.ChildNodes.Add(bosnode);

        }

        else 

        {

            foreach (string file in files)

            {

                TreeNode filenode = new TreeNode(file.Substring(path.Length));

                parentnode.ChildNodes.Add(filenode);

            }

        }

    }



Evet, dosyaları da taradıktan sonra işlemimiz tamamlandı. Yaptığımız uygulamanın son haline bir bakalım.



Siz de bu örnekten yola çıkarak belirlediğiniz dizinde resimleri yönetebileceğiniz bir yapı oluşturmaya çalışın.

İyi çalışmalar dilerim.

  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git