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
View Code


一个表的显示:

#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
View Code


显示效果:

 

 

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

 

posted @ 2014-09-17 17:30  songxia777  阅读(660)  评论(0编辑  收藏  举报