Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

ASP.Net de TreeView Kullanımı

Arkadaşlar bu yazımda size asp.net treeView kullanımını göstereceğim ve sonsuz bir menu yapısı oluşturmayı göstereceğim. İlk olarak veritabanımızı oluşturalım ve sayfalar diye bir tablo açalım. Daha sonra bu tablomuzun içine SayfaId,SayfaAd,Icerik ve root alanlarını açalım. Root altsayfalama yapmamıza yarayacak alanımız.
Şimdi alt kısımda yazacağım kodu lütfen Default.aspx sayfamıza yazalım.


<asp:TreeView ID="TreeView1" runat="server" ImageSet="Arrows" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
                            <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
                            <Nodes>
                                <asp:TreeNode Text="Menuler" Value="Menuler"></asp:TreeNode>
                            </Nodes>
                            <NodeStyle Font-Names="verdana" Font-Size="10pt" ForeColor="White" HorizontalPadding="5px"
                                NodeSpacing="0px" VerticalPadding="0px" />
                            <ParentNodeStyle Font-Bold="False" />
                            <SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px"
                                VerticalPadding="0px" />
</asp:TreeView>


Bu kodlarımızı yazdıktan sonra gelin şimdi asıl kodlara c# kodlarımıza geçelim.

DataTable dt = new DataTable();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            SqlDataAdapter dap = new SqlDataAdapter("select SayfaId,SayfaAd,root from Sayfalar order by root", baglan.baglanti);
            dap.Fill(dt);
            populateData(TreeView1.Nodes[0], getrows("0"));

        }
    }
DataRowCollection getrows(string id)
    {
        DataView dw = new DataView(dt);
        dw.RowFilter = "root=" + id;
        return dw.ToTable().Rows;
    }

    void populateData(TreeNode node, DataRowCollection col)
    {
        foreach (DataRow row in col)
        {
            TreeNode n = new TreeNode();
            n.Text = row[1].ToString();
            n.Value = row[0].ToString();
            node.ChildNodes.Add(n);
            populateData(n, getrows(row[0].ToString()));
        }

    }
    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        if (TreeView1.SelectedNode.Parent != null)
        {
            Response.Redirect("SayfaDetay.aspx?SayfaId=" + TreeView1.SelectedNode.Value);
        }
    }

 


Bu kodlarımızı da Default.aspx.cs sayfamıza yazıktan sonra artık işlem bitmiş olacak ve kullanıma hazır hale gelecek.
Görüşmek Üzere;
Osman KURT
Yazılım geliştirici ve Grafiker

Yorumlar (6) -

  • Mustafa

    6.9.2011 20:07:34 | Yanıtla

    Veritabanınıda ve Baglantı aşamasınıda anlatabilirmisin ?

  • Osman KURT

    7.9.2011 06:52:37 | Yanıtla

    Merhaba Mustafa;
    Veritabanında;
    Tablo adı = Sayfalar
    Alanlar =SayfaId,SayfaAd,Icerik,root

    DataBase Bağlantısı İçinde load olayında ki yere;

    SqlConnection cnn=new SqlConnection("Baglantı yolun")
    SqlDataAdapter dap = new SqlDataAdapter("select SayfaId,SayfaAd,root from Sayfalar order by root", cnn);
    dap.Fill(dt);
    populateData(TreeView1.Nodes[0], getrows("0"));


    olarak değiştirdiğin takdirde işlemin gerçekleşecek. Umarım faydalı olur, herhangi bir hata alırsan yeniden yazarsın.

  • Melih

    4.4.2012 10:13:50 | Yanıtla

    Hay Allah razı olsun.

    2 Haftadır aradığım örneği nihayet burda buldum.

    Teşekkürler, teşekkürler..

  • fatih

    18.3.2013 09:37:56 | Yanıtla

    Elinize sağlık, güzel bir örnek olmuş

  • Serkan

    19.1.2014 22:50:56 | Yanıtla

    sonsuz kategorileri listeleme ve gösterilmesi açısından faydalı makale olmuş. Sadece treeview de de kullanılmaz çeşitli örnekler geliştirilebilir.
    Emeğine sağlık hocam.

Loading