怎样将数据库中的数据添加到treeview中?
假设数据表名为 abc,里面有部门代码、部门名称两个字段,现在想以部门代码为标准,将部门名称添加到treeview中,假设数据如下
部门代码          部门名称
100               中华公司
100-100           中华公司财务部
100-200           中华公司人力资源部
100-200-100       中华公司人力资源部招聘科
100-200-200       中华公司人力资源部培训科
100-300           中华公司制造部
100-300-100       中华公司制造部总装车间
100-400           中华公司设备部
100-400-100       中华公司设备部维修车间
100-400-100-100   中华公司设备部维修车间一组
100-400-100-200   中华公司设备部维修车间二组

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/4935/4935639.xml?temp=.8930933
    求帮忙!谢谢!
      

  2.   

    private void buildTree()
    {
    DataSet ds = new DataSet();
    ds=DB.RunProc("select * from Department ",ds);
    ds.Relations.Add("NodeRelation", ds.Tables[0].Columns["MenuID"], ds.Tables[0].Columns["ParentMenuID"]); foreach (DataRow dbRow in ds.Tables[0].Rows)
    {
    if (dbRow.IsNull("ParentMenuID"))
    {
    TreeViewNode newNode = CreateNode(dbRow["FunctionName"].ToString(), dbRow["MenuImage"].ToString(),dbRow["MenuID"].ToString(), true);
    TVMenu.Nodes.Add(newNode);
    PopulateSubTree(dbRow, newNode);
    }
    }
    } private void PopulateSubTree(DataRow dbRow, TreeViewNode node)
    {
    foreach (DataRow childRow in dbRow.GetChildRows("NodeRelation"))
    {
    TreeViewNode childNode = CreateNode(childRow["FunctionName"].ToString(), childRow["MenuImage"].ToString(),childRow["MenuID"].ToString(), true);
    node.Nodes.Add(childNode);
    PopulateSubTree(childRow, childNode);
    }
    } private TreeViewNode CreateNode(string text, string imageurl, string NodeValue ,bool expanded)
    {
    TreeViewNode node = new TreeViewNode();
    node.Text = text;
    node.Value=NodeValue;
    node.ImageUrl = imageurl;
    node.Expanded = expanded;
    return node;
    }
    //调用-------------------------------------
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if (!IsPostBack)
    {
    buildTree();
    }
    }
      

  3.   

    http://www.cnblogs.com/goody9807/archive/2005/07/01/184754.html
      

  4.   

    建议最好数据库中加一列,ParentID,存储父部门的ID,这样处理起来会方便一点。
      

  5.   

    //*****你先将你的"部门代码"中的"-"替换掉,然后用SQL构造父子关系,最后用递推方法加载就可以了三//*****SQL
    SELECT * ,CASE WHEN len(replace(nodecode,'-',''))=3 THEN NULL ELSE 
    SUBSTRING(replace(NODECODE,'-',''),0,LEN(replace(NODECODE,'-',''))-2) END AS  ParentCode FROM TB_System_Power
      

  6.   

    static public TreeNode GetTree(string strTableName,string strId,string strHighId,string strName)
        {
            TreeNode root = new TreeNode();
            DataSet ds1 = new DataSet();
            DataSet ds2 = new DataSet();
            DataSet ds3 = new DataSet();
            DataSet ds4 = new DataSet();
            // get level1 nodes
            ds1 = DbAccess.GetTable("level1");        for (int i = 0; i < ds1.Tables[0].Rows.Count; i++)
            {
                // create level1 node
                TreeNode level1 = new TreeNode();
                level1.Value = ds1.Tables[0].Rows[i][0].ToString();
                level1.Text = ds1.Tables[0].Rows[i][1].ToString();
                // get level2 nodes
                ds2 = DbAccess.GetTable("level2");            for (int j = 0; j < ds2.Tables[0].Rows.Count; j++)
                {
                    // create level2 node
                    TreeNode level2 = new TreeNode();
                    level2.Value = ds2.Tables[0].Rows[j][0].ToString();
                    level2.Text = ds2.Tables[0].Rows[j][1].ToString();
                    // get level3 nodes
                    ds3 = DbAccess.GetTable("level3");                for (int k = 0; k < ds3.Tables[0].Rows.Count; k++)
                    {
                        // create level3 node
                        TreeNode level3 = new TreeNode();
                        level3.Value = ds3.Tables[0].Rows[k][0].ToString();
                        level3.Text = ds3.Tables[0].Rows[k][1].ToString();
                        //******************************level4***********************************
                        ds4 = DbAccess.GetTable("level4");                    for (int l = 0; l < ds4.Tables[0].Rows.Count; l++)
                        {
                            // create level4 node
                            TreeNode level4 = new TreeNode();
                            level4.Value = ds4.Tables[0].Rows[l][0].ToString();
                            level4.Text = ds4.Tables[0].Rows[l][1].ToString();                        level3.ChildNodes.Add(level4);                    }
                        //***********************************************************************
                        level2.ChildNodes.Add(level3);                }
                    level1.ChildNodes.Add(level2);            }
                root.ChildNodes.Add(level1);
            }
            root.Text = Common.GetErrStrById("ORGLIST_001");    // root
            root.Value = "-1";                                  // root id
            return root;    }代码写的恶心了点,不过绝对好用。
    大概意思就是返回一个添加好数据的treeview节点,把这个节点添加到treeview里去就都出来了。
      

  7.   

    SELECT * ,CASE WHEN len(replace(nodecode,'-',''))=3 THEN NULL ELSE 
    SUBSTRING(replace(NODECODE,'-',''),0,LEN(replace(NODECODE,'-',''))-2) END AS  ParentCode
    ,REPLACE(NODECODE,'-','') AS NewNodeCode
     FROM TB_System_Power
      

  8.   

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using Tool;
    using Manager;
    using Entity;
    public partial class Web_BBS_BIZNewsLeft : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
                {
                    this.BindTvBIZNews();
                }
            catch(Exception ex)
            {
                this.lblMessage.Text = ex.Message;
            }
        }
        /// <summary>
        /// 绑定行业类型到树控件
        /// </summary>
        public void BindTvBIZNews()
        {
            DataTable dtType = GoodTypeManager.GetGoodTypesByParentID(0);
            DataRow[] drType = dtType.Select();
            for (int i = 0; i < drType.Length; i++)
            {
                TreeNode tnType = new TreeNode();
                tnType.Expanded = false;
                tnType.Text = UtilTool.ToSafeString(drType[i]["Name"]);
                tnType.ToolTip = UtilTool.ToSafeString(drType[i]["Name"]);
                tnType.Value = UtilTool.ToSafeString(drType[i]["ID"]);
                tnType.NavigateUrl = "BIZNewsRight.aspx?BIZNewsTypeID=" + tnType.Value;
                tnType.Target = "frmRight";
                this.tvBIZNews.Nodes.Add(tnType);
            }
        }
    }自己参考参考不知道帮上不上忙!UP
      

  9.   

    最好在你的字段中加一个panrentID字段,然后采用递归
    如下: Sub initTree(ByVal Nds As TreeNodeCollection, ByVal parentID As String)
            Dim tmpNd As TreeNode
            Dim rows As DataRow()
            rows = ds.Tables("tables").Select("ParentID='" + parentID + "'")
            Dim row As DataRow
            For Each row In rows
                tmpNd = New TreeNode
                tmpNd.ID = row("NodeID").ToString
                tmpNd.Text = row("NodeName").ToString
                tmpNd.NavigateUrl = row("url").ToString
                tmpNd.Target = "main"            tmpNd.Expanded = True
                Nds.Add(tmpNd)
                initTree(tmpNd.Nodes, tmpNd.ID)
            Next    End Sub