1.609 kez okundu

Asp.net de treeview ile sitemizin dizin ve dosyalarının gösterimi

10 10 1.609 kez okundu incelendi

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.

http://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.

Gelen aramalar :

Yoruma kapali.

Barış Ozcan Facebook Sayfasi
Barış Ozcan Twitter