TreeView控件绑定数据库

1.在设计视图里面的代码

    <form id="form1" runat="server">
    <div>
        <h1>两个表</h1>
        <asp:TreeView ID="TreeView1" runat="server">
           <HoverNodeStyle Font-Underline="true" ForeColor="Window" />
            <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px" NodeSpacing="0px" VerticalPadding="2px"/>
             <ParentNodeStyle Font-Bold="False" />
             <SelectedNodeStyle BackColor="Red" Font-Underline="False" HorizontalPadding="0px" VerticalPadding="0px" />
        </asp:TreeView>
        <br />
        <asp:Button ID="Button1" runat="server" Text="ShowTwoTable" OnClick="Button1_Click"/>
        <br /><br /><hr />
        <h1>一个表</h1>
        <asp:TreeView ID="TreeView2" runat="server"></asp:TreeView>
        <br />
        <asp:Button ID="Button2" runat="server" Text="ShowOne" OnClick ="Button2_Click" />
    </div>
    </form>

2.后台代码:
两个关联表的显示

#region 两个表的显示
        //根据获取的数据填充TreeView控件
        private void PopulateTreeView(DataTable dtParent, int parentId, TreeNode treeNode)
        {
            foreach (DataRow row in dtParent.Rows)
            {
                TreeNode child = new TreeNode
                {
                    Text = row["Name"].ToString(),
                    Value = row["Id"].ToString()
                };
                if (parentId == 0)
                {
                    TreeView1.Nodes.Add(child);
                    DataTable dtChild = this.GetDataTableBySql("select Id,Name from VehicleSubType where VehicleId= " + child.Value);
                    PopulateTreeView(dtChild, int.Parse(child.Value), child);
                }
                else
                {
                    treeNode.ChildNodes.Add(child);
                }
            }
        }

        //根据sql语句从数据库中获取整个表的数据
        private DataTable GetDataTableBySql(string sql)
        {
            DataTable dt = new DataTable();
            string constr = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {
                using (SqlCommand cmd = new SqlCommand(sql))
                {
                    using (SqlDataAdapter sda = new SqlDataAdapter())
                    {
                        cmd.CommandType = CommandType.Text;
                        cmd.Connection = con;
                        sda.SelectCommand = cmd;
                        sda.Fill(dt);
                    }
                }
                return dt;
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
                DataTable dt = this.GetDataTableBySql("select Id, Name  from VechicleType ");
                this.PopulateTreeView(dt, 0, null);
        }
        #endregion

一个表的显示:

#region 一个表的显示
        protected void Button2_Click(object sender, EventArgs e)
        {
            PopulateMenu();
        }
        //use the linq to sql
        MynodeDataContext db = new MynodeDataContext();
        private void PopulateMenu()
        {
            List<NodeSubNode> allMenu = new List<NodeSubNode>();
            allMenu = db.NodeSubNodes.ToList();
            CreateTreeView(allMenu, 0, null);
        }

        private void CreateTreeView(List<NodeSubNode> source, int parentID, TreeNode parentNode)
        {
            List<NodeSubNode> newSource = db.NodeSubNodes.Where(a => a.SubjectId.Equals(parentID)).ToList();
            foreach (var i in newSource)
            {
                TreeNode newnode = new TreeNode(i.Name, i.Id.ToString());
                if (parentNode == null)
                {
                    TreeView2.Nodes.Add(newnode);
                }
                else
                {
                    parentNode.ChildNodes.Add(newnode);
                }
                CreateTreeView(source, i.Id, newnode);
            }
        }
        #endregion

显示效果:

More information:

http://dotnetawesome.blogspot.com/2013/11/how-to-bind-treeview-from-database.html

http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/navigation/treeview.aspx

时间: 2024-09-30 10:28:15

TreeView控件绑定数据库的相关文章

asp.net TreeView控件绑定数据库显示信息

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using System.Data; 8 using System.Data.SqlClient; 9 using System.Configuration; 10 11 public part

Asp.net--DropDownList控件绑定数据库数据

DropDownList控件绑定数据库数据:DB是公共类,reDt是公共类中的方法 放在Page_Load事件中 if (!IsPostBack) { DB db = new DB(); DataTable dt = db.reDt("select * from provinceInfo order by provinceid asc"); ddlsmprovince.DataSource = dt; ddlsmprovince.DataTextField = ddlsmprovinc

c#运用TreeView控件的树形视图显示数据库中数据

TreeView控件显示数据库,Nodes集合的Add方法. Treeview控件的Nodes集合包含多个子节点,节点也可以包含另外的节点.通过节点的backcolor属性设置背景色. 具体代码测试: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System

HTTP模拟工具【C#/Winform源码】、Json绑定TreeView控件、使用了MetroModernUI、RestSharp、Dapper.Net、Newtonsoft.Json、SmartThreadPool这几个主要开源框架

HTTP模拟工具 开发语言:C#/Winform开发工具:Visual Studio 2017数据库:   SQLite使用框架:界面-MetroModernUI              Http请求-RestSharp              ORM-Dapper.Net              Json解析-Newtonsoft.Json              多线程-SmartThreadPool本来打算试一下Dapper.Net扩展框架-DapperExtensions,用了有

WPF 将数据源绑定到TreeView控件出现界面卡死的情况

首先来谈一下实现将自定义的类TreeMode绑定到TreeView控件上的一个基本的思路,由于每一个节点都要包含很多自定义的一些属性信息,因此我们需要将该类TreeMode进行封装,TreeView的每一个节点的类型都是TreeMode,我们还定义一些Children属性,Parent属性用于定义当前节点的子节点和父节点,当然还定义了一些常见的Name.ToolTip.ID.IsExpand.IsChecked(主要是在每一个节点前面添加了一个CheckBox)等属性,另外的一些属性就是具体需要

ASP.NET用递归法绑定Treeview控件

1.代码如下: private void Form1_Load(object sender, EventArgs e) { treeView1.Nodes.Clear();//清空 树的所有节点 List<T_NavigationModel> Fnods = new T_NavigationBLL().GetModelList("Npid=0");//获取所有根节点 if (Fnods.Count <= 0)//判断要添加的节点个数是否为0,为0则取消 return;

如何:使用TreeView控件实现树结构显示及快速查询

本文主要讲述如何通过使用TreeView控件来实现树结构的显示,以及树节点的快速查找功能.并针对通用树结构的数据结构存储进行一定的分析和设计.通过文本能够了解如何存储层次结构的数据库设计,如何快速使用TreeView控件生产树,以及如何快速查找树节点. 关键词:C# TreeView.树结构存储.树节点查找.层次结构 一.      概述: 树结构(层次结构)在项目的使用中特别常见,在不同项目中使用的控件可能不同(如:在Extjs中使用的是TreePanel控件,WinForm中可能用的是Tre

DataGridView控件绑定数据源

前言: 最近听说DataGridView控件能直接绑定数据源.而不用穿越这层那层的忍辱负重.获取数据.真是高兴的屁颠屁颠的.后来一想二狗肯定不会弄.特意写了一个笨蛋版的教程--也算记录生活.欢度端午了.粽子就不送给大家了.但是大家可以找我来要呦!数量有限送完为止!--chenchen --步骤 1 添加控件 2 添加数据源 中间过程就是点下一步就不截图了.最后选择的这个是每次连接获取数据库数据的表和表的字段 3 三个组件意思 Adapter控件:连接数据库获取数据 DataSet:存放获取好的数

WinForms中TreeView控件的扩展与使用

EXE文件方便大家测试   源码下载 TreeView控件非常的好用,在我的公文系统中,使用TreeView控件选择接收公文的人员,支持单选,可多选 现提取出来,方便大家使用 涉及到的知识点 1:从Xml文件中加载内容显示到TreeView控件中 <?xml version="1.0" encoding="utf-8"?> <根目录> <组 名称="校长" 用户ID="1000"> <