RSS

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

17 Nis

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.

https://i0.wp.com/resim.sanalkurs.net/uploads/Untitled_20.jpg

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

İyi çalışmalar dilerim.

Kaynak dosyayı indirmek için tıklayın

 
Yorum yapın

Yazan: 17 Nisan 2011 in Genel

 

Etiketler: , , , , , , , ,

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

 
%d blogcu bunu beğendi: