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

所属分类: 软件编程 / C#教程 阅读数: 135
收藏 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# 大小写转换(金额)实例代码

C# 大小写转换(金额)实例代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

C# WinForm中Panel实现用鼠标操作滚动条的实例方法

由于在WinForm中Panel不能直接响应鼠标的滚动事件,只好采用捕获窗体的滚动事件。
收藏 0 赞 0 分享

C#访问应用程序配置文件的方法

C#访问应用程序配置文件的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#读写文件的方法汇总

C#读写文件的方法汇总,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#计算代码执行时间的方法

在一些测试工作时我们需要获得高精度的代码执行时间以比较其效率。
收藏 0 赞 0 分享

C# 动画窗体(AnimateWindow)的小例子

C# 动画窗体(AnimateWindow)的小例子,需要的朋友可以参考一下
收藏 0 赞 0 分享

C# zxing二维码写入的实例代码

C# zxing二维码写入的实例代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

c#判断输入的是不是数字的小例子

c#判断输入的是不是数字的小例子,需要的朋友可以参考一下
收藏 0 赞 0 分享

c# 深拷贝与浅拷贝的区别分析及实例

浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用. 深拷贝(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.
收藏 0 赞 0 分享

C#利用com操作excel释放进程的解决方法

最近利用Microsoft.Office.Interop.Excel.Application读取一个excel后,进程中一直存在excel,在网上找了一阵子,其中有几个解决方案
收藏 0 赞 0 分享
查看更多