TreeView控件的綁定


 

關於TreeView控件的綁定,在網上查了很多資料,練習了在兩種情況下的綁定,一種是在網頁后台直接綁定,一種是在三層架構中綁定。 

數據庫表的設計

商品小類表(tb_type)

字段名

數據類型

主鍵

外鍵

非空

含義

type_id

int

小類編號

type_name

nvarchar(50)

小類名稱

category_id

int

大類編號

intro

text

介紹

 商品大類表(tb_ category)

字段名

數據類型

主鍵

外鍵

非空

含義

category_id

int

大類編號

category_name

varchar(255)

大類名稱

intro

text

介紹

 

網頁后台直接綁定:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MySql.Data.MySqlClient;
using System.Data;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable dtFather=exe_Table("server=localhost;user id=root;password=root;database=em", "select distinct tb_category.category_id,tb_category.category_name FROM   tb_category");
            foreach(DataRow dr in dtFather.Rows)
            {
                
                TreeNode tn = new TreeNode();
                tn.Value = dr["category_id"].ToString();
                tn.Text = dr["category_name"].ToString();
                TreeView1.Nodes.Add(tn);
                DataTable dtChild = exe_Table("server=localhost;user id=root;password=root;database=em",
                    "select type_id,type_name,category_id from tb_type where tb_type.category_id=" + dr["category_id"].ToString());
                foreach (DataRow drChild in dtChild.Rows)
                {
                    TreeNode tnChild = new TreeNode();
                    tnChild.Value = drChild["type_id"].ToString();//節點的Value值,一般為數據庫的id值
                    tnChild.Text = drChild["type_name"].ToString();//節點的Text,節點的文本顯示
                    tn.ChildNodes.Add(tnChild);
                }

            }
        }
    }



          /// <summary>
        /// 取出數據庫中數據,生成DataTable
        /// </summary>
        /// <param name="str_Con">數據庫連接</param>
        /// <param name="str_Cmd">sql語句</param>
        /// <returns></returns>
        private DataTable exe_Table(string str_Con,string str_Cmd)
        {
            DataSet ds = new DataSet();
            using (MySqlConnection conn = new MySqlConnection(str_Con))
            {
                using (MySqlDataAdapter oda = new MySqlDataAdapter(str_Cmd, conn))
                {
                    conn.Open();
                    oda.Fill(ds);
                }
            }
            return ds.Tables[0];
        }


}

 

 

三層架構綁定:

Model實體類:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Model
{
    public class PNode
    {
        public int id { get; set; }
        public string name { get; set; }
        public string intro { get; set; }
    }
}

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Model
{
    public class Node
    {
        public int id { get; set; }
        public string name { get; set; }
        public int pid { get; set; }
        public string intro { get; set; }
    }
}

 

DAL:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;
using Model;
namespace DAL
{
    public class ListTreeNode
    {
        public static List<PNode> GetPNode()
        {
            string strSql = "select distinct category_id,category_name ,intro from tb_category";
            List<PNode> list = new List<PNode>();
            using (MySqlConnection cn = new MySqlConnection(StrCon.Conn))
            {
                cn.Open();
                MySqlDataAdapter sda = new MySqlDataAdapter(strSql, cn);
                DataSet ds = new DataSet();
                sda.Fill(ds);
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    PNode pnode = new PNode();
                    pnode.id = (int)dr["category_id"];
                    pnode.name = dr["category_name"].ToString();
                    pnode.intro = dr["intro"].ToString();
                    list.Add(pnode);
                }
                return list;
            }
        }

        public static List<Node> GetNode(int pnode_id)
        {
            string strSql ="select type_id,type_name,tb_type.intro,category_id from tb_type where tb_type.category_id=" + pnode_id;
            List<Node> list = new List<Node>();
            using (MySqlConnection cn = new MySqlConnection(StrCon.Conn))
            {
                cn.Open();
                MySqlDataAdapter sda = new MySqlDataAdapter(strSql, cn);
                DataSet ds = new DataSet();
                sda.Fill(ds);
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    Node node = new Node();
                    node.id = (int)dr["type_id"];
                    node.name = dr["type_name"].ToString();
                    node.intro = dr["intro"].ToString();
                    list.Add(node);
                }
                return list;
            }
        }
    }
}

 

BLL:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Web;
using System.Web.UI.WebControls;
using DAL;
using Model;

namespace BLL
{
    public class VarityManage
    {
        //獲得根結點信息
        public static List<PNode> GetPNode()
        {
            return DAL.ListTreeNode.GetPNode(); 

        }
        //獲得葉結點信息
        public static List<Node> GetNode(int pnode_id)
        {
            return DAL.ListTreeNode.GetNode(pnode_id);
        }

    }
}

 

UI:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using Model;

namespace E_mall_background_system.Management
{
    public partial class main : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindTreeView();
                BindddlSelectPNode1();
            }
        }

        //TreeView的綁定
        public void BindTreeView()
        {
            TreeView1.Nodes.Clear();
            int rootId = 0;
            string rootName = "所有商品種類";
            TreeNode root = CreateTreeNode(rootId, rootName);
            TreeView1.Nodes.Add(root);
            List<PNode> pnodes = VarityManage.GetPNode();
            foreach (PNode pnode in pnodes)
            {
                int nodeId = (int)pnode.id;
                string nodeName = pnode.name.ToString();
                TreeNode treeNode = this.CreateTreeNode(nodeId, nodeName);
                root.ChildNodes.Add(treeNode);
                List<Node> nodes = VarityManage.GetNode(nodeId);
                foreach (Node node in nodes)
                {
                    int childNodeId =(int) node.id;
                    string childNodeName = node.name.ToString();
                    TreeNode childTreeNode = this.CreateTreeNode(childNodeId, childNodeName);
                    treeNode.ChildNodes.Add(childTreeNode);
                }
                
            }
        }

        public TreeNode CreateTreeNode(int id, string name)
        {
            TreeNode tn = new TreeNode();
            tn.Value = id.ToString();
            tn.Text = name;
            return tn;
        }

    }
}

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM