treeview绑定数据库动态生成数据的方法

两种方式 ,根据数据库表的创建不同而不同。

 

一个是根节点是一张表,子节点在另一张表,是主外键的关系 ,那么是:

    //treeview 1 循环添加父节点
        public void bbb()
    {
        DataTable dt = DataAccess.Sys.Get_Zb_DeptCa1("");
        foreach (DataRow row in dt.Rows)
        {
            TreeNode node = CreateNode(Convert.ToInt32(row["DeptCa_Code"]), Convert.ToString(row["DeptCa_Name"]));
//调用子节点
            CCreateChild(Convert.ToInt32(row["DeptCa_Code"]),node);
//吧节点添加到treeview中
            this.TreeView1.Nodes.Add(node);
        }
    }
        //公用的节点
        public TreeNode CreateNode(int id, string name)
        {
            TreeNode node = new TreeNode();
            node.Text = name;
          //  node.ImageUrl = imgs;
            return node;
        }
        //treeview 1 循环添加子节点
        public void CCreateChild(int parentid, TreeNode node)
    {
        DataTable dt = DataAccess.Sys.Get_Zb_DeptByCaid(parentid);
        foreach (DataRow row in dt.Rows)
        {
            TreeNode nodes = CreateNode(Convert.ToInt32(row["Dept_Code"]), Convert.ToString(row["Dept_Name"]));
         // 这句话可以不要   nodes.NavigateUrl = "ShowSecondOne.aspx?ltid=" + Convert.ToInt32(row["id"]);
            node.ChildNodes.Add(nodes);
        }

 

要是所有节点在同一张表内,则是:

数据结构如下:

CREATE TABLE [dbo].[S_Menu] (

 [NodeId] [char] (6) COLLATE Chinese_PRC_CI_AS NULL ,

 [ParentId] [char] (6) COLLATE Chinese_PRC_CI_AS NULL ,

 [NodeName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

 [Address] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

 [Icon] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL

) ON [PRIMARY]

GO

 

 //建树的基本思路是:从根节点开始递归调用显示子树

         private void InitTree(TreeNodeCollection Nds,string parentId)

  {

   DataView dv=new DataView();

   TreeNode tmpNd;

   string intId;

   dv.Table=ds.Tables["tree"];

   dv.RowFilter="ParentId="" + parentId + """ ;

   foreach(DataRowView drv in dv)

   {

    tmpNd=new TreeNode();

    tmpNd.ID=drv["NodeId"].ToString();

    tmpNd.Text=drv["NodeName"].ToString();

    tmpNd.ImageUrl="../webimages/"+drv["Icon"].ToString();

    tmpNd.NavigateUrl="../"+drv["Address"].ToString();

    Nds.Add(tmpNd);

    intId=drv["ParentId"].ToString();

    InitTree(tmpNd.Nodes,tmpNd.ID);

   }

  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值