C# TreeView读取数据库简单实例

所属分类: 软件编程 / C#教程 阅读数: 79
收藏 0 赞 0 分享

效果:

数据库:

思路:

利用for遍历,然后创建父节点,再根据父节点创建出子节点。

代码:

复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Collections;
using System.Configuration;
using System.Data.SqlClient;

 

namespace TreeView
{
    public partial class TreeView : System.Web.UI.Page
    {
        string connection = ConfigurationManager.ConnectionStrings["SQLconnection"].ToString();
        protected void Page_Load(object sender, EventArgs e)
        {
            select();
            CreateTree();
        }
        DataSet ds = new DataSet();
        public DataSet DataS(string sql, string tablename)
        {
            SqlConnection con = new SqlConnection(connection);
            SqlDataAdapter sqlda = new SqlDataAdapter(sql, con);
            sqlda.Fill(ds, tablename);
            return ds;
        }

        //ParentMenu:父节点,
        //Grade:标识这是第几级节点,
        //Flag:标识是不是尾结点,1是 0 不是,
        //href:指向的链接
        public void select()
        {
            string sql = "select * from treeview";
            ds = DataS(sql, "test");
        }

        public void CreateTree()
        {
            try
            {
                DataTable dt = ds.Tables["test"];
                SortedList sl = new SortedList();
                TreeNode tn = new TreeNode();
                if (dt.Rows.Count <= 0)
                {
                    tn.Text = "空";
                    tn.Value = "";
                    tn.NavigateUrl = "";
                    tn.Target = "";
                    tn.Expanded = false;
                    tn.SelectAction = TreeNodeSelectAction.SelectExpand;

                }
                else
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        //创建父节点
                        if (dt.Rows[i]["Grade"].ToString() == "1")
                        {
                            TreeNode node = new TreeNode();
                            node.Text = dt.Rows[i]["MenuName"].ToString();
                            node.Value = dt.Rows[i]["MenuID"].ToString();
                            if (dt.Rows[i]["Flag"].ToString() == "1")
                            {
                                node.NavigateUrl = dt.Rows[i]["href"].ToString();
                                tn.Target = "_bank";
                            }
                            node.Expanded = false;
                            node.SelectAction = TreeNodeSelectAction.Expand;
                            sl.Add(node.Value, node);
                            tv_Method.Nodes.Add(node);
                        }
                        else
                        {
                            //查找父节点
                            TreeNode ParentNod = (TreeNode)sl.GetByIndex(sl.IndexOfKey(dt.Rows[i]["ParentMenu"].ToString()));
                            //创建子节点
                            TreeNode tnChild = new TreeNode();
                            tnChild.Text = dt.Rows[i]["MenuName"].ToString();
                            tnChild.Value = dt.Rows[i]["MenuID"].ToString();
                            if (dt.Rows[i]["Flag"].ToString() == "1")
                            {
                                tnChild.NavigateUrl = dt.Rows[i]["href"].ToString();
                                tnChild.Target = "_bank";
                            }
                            tnChild.Expanded = false;
                            tnChild.SelectAction = TreeNodeSelectAction.Expand;
                            sl.Add(tnChild.Value, tnChild);
                            ParentNod.ChildNodes.Add(tnChild);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

更多精彩内容其他人还在看

C# SendInput 模拟鼠标操作的实现方法

C# SendInput 模拟鼠标操作的实现方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中 paint()与Onpaint()的区别

paint是事件onpaint方法onpaint方法是调用paint事件的,用哪一个,效果是一样,就看那一个方便了内部是这样实现的:
收藏 0 赞 0 分享

c#中GetType()与Typeof()的区别

c#中GetType()与Typeof()的区别,需要的朋友可以参考一下
收藏 0 赞 0 分享

将字符串转换成System.Drawing.Color类型的方法

将字符串转换成System.Drawing.Color类型的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C# 抓取网页内容的方法

C# 抓取网页内容的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

基于C#后台调用跨域MVC服务及带Cookie验证的实现

本篇文章介绍了,基于C#后台调用跨域MVC服务及带Cookie验证的实现。需要的朋友参考下
收藏 0 赞 0 分享

使用C#获取远程图片 Form用户名与密码Authorization认证的实现

本篇文章介绍了,使用C#获取远程图片 Form用户名与密码Authorization认证的实现。需要的朋友参考下
收藏 0 赞 0 分享

Winform跨线程操作的简单方法

线程间操作无效:从不是创建控件“label1”的线程访问它
收藏 0 赞 0 分享

C# WINFORM 强制让窗体获得焦点的方法代码

C# WINFORM 强制让窗体获得焦点的方法代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中方括号[]的语法及作用介绍

C#中方括号[]可用于数组,索引、属性,更重要的是用于外部DLL类库的引用。
收藏 0 赞 0 分享
查看更多