protected void Page_Load(object sender, EventArgs e) 
    { 
      if (!IsPostBack) 
        { 
            BindJG(); 
        } 
    } 
    private void BindJG() 
    { 
        DataSet ds = new DataSet(); 
        DB c = new DB(); 
        ds = c.GetAll("Tb_xt_jg"); 
        DataTable dtb = ds.Tables[0]; 
        TreeNode root = new TreeNode(); 
        root.Value = "0"; 
        root.Text = ""; 
        root.ImageUrl = "../images/folder.gif"; 
        root.Expanded = true; 
        this.TreeView1.Nodes.Add(root); 
        initTree(dtb, "", root); 
        this.TreeView1.ExpandAll(); 
    } 
protected void initTree(DataTable dt, string nFatherid, TreeNode fatherNode) 
    { 
        DataView dv = new DataView(dt);         if (nFatherid == "") 
            dv.RowFilter = "depth='1'"; 
        else 
            dv.RowFilter = "shangjjgbh='"+nFatherid+"'"; 
        foreach (DataRowView Row in dv) 
        { 
            TreeNode node = new TreeNode(); 
            if (fatherNode.Value == "0")//根节点 
            { 
              node.Value = Row["XTBH"].ToString(); 
              node.Text = Row["mc"].ToString(); 
              node.NavigateUrl = ""; 
              node.ImageUrl = "../images/folder.gif"; 
              fatherNode.ChildNodes.Add(node); 
              initTree(dt, Row["XTBH"].ToString(), node);//递归 
            } 
            else 
            { 
                node.Text = Row["mc"].ToString(); 
                node.Value = Row["XTBH"].ToString(); 
                node.ImageUrl = "../images/jg.gif"; 
                fatherNode.ChildNodes.Add(node);           } 
        }     } 

解决方案 »

  1.   

       //显示指定的体系树
            public static void ShowTViewOnlyOneTree(TreeView TView,   int ShowType, int vShowDetail,string vID)
            {
                //定义数据库操作DLL
                ClsSQL.ClsSQL Sql = new ClsSQL.ClsSQL();
                //定义数据集
                System.Data.DataSet Ds = new System.Data.DataSet();            string SqlStr = "";
                TreeNode Node = null;            Application.DoEvents();
                TView.Nodes.Clear();              switch (ShowType) 
                    { 
                        case 0: 
                            // 0---  设备体系树 
                            SqlStr = "SELECT SystemID AS ID,   SystemName AS Context, CASE WHEN LEFT(SystemID, LEN(SystemID) - 3) = '' THEN '0' ELSE LEFT(SystemID, LEN(SystemID) - 3) END AS ParentID, 0 AS depth ,IsLeaf ,ShowID FROM Device_000_SystemTree WHERE CompanyID='" + OP.CompanyID + "'"; 
                            
                            if (vID.Length > 0)
                                //AND ('01-004-001-001-001-001' LIKE ShowID + '%')
                                SqlStr += " and  '" + vID + "' LIKE ShowID + '%'";                        break; 
                    }
                //访问数据库,执行查询操作
                if (!Sql.ExecAdapter(SqlStr, StrConnect)) return;            //将查询出的数据赋给数据集
                Sql.Adapter.Fill(Ds);
                //释放数据连接
                Sql.Adapter.Dispose();
                //关闭数据连接
                Sql.Close();            if (Ds.Tables[0].Rows.Count > 0)
                {                AddTree(TView, "0", Node, ShowType, Ds, vShowDetail);            }
                Ds.Clear();
            }
      

  2.   

       private static void AddTree(TreeView TView, string ParentID, TreeNode pNode, int intI, System.Data.DataSet Ds, int vShowDetail)
            { 
            TreeNode Node = null;        System.Data.DataView dvTree = new System.Data.DataView();
            dvTree = new System.Data.DataView(Ds.Tables[0]);
                switch (intI )
                {
                    case 0:
                            dvTree.RowFilter = "ParentID = '" + ParentID.ToString() + "'";
                        break ;
                    default :
                            dvTree.RowFilter = "ParentID = " + ParentID.ToString();
                break;
                }
           foreach (System.Data.DataRowView Row in dvTree)
            { 
                if (pNode == null)
                {
                    if (TView.Nodes.Count == 0)
                    {
                        switch (intI)
                        {
                            case 0:
                                Node = TView.Nodes.Add("设备体系树");
                                break;
                            case 1:
                                Node = TView.Nodes.Add("线路体系树"); 
                                break;
                            case 2:
                                Node = TView.Nodes.Add("燃料分类");
                                break;
                            case 3:
                                Node = TView.Nodes.Add("电力操作票");
                                break;
                            case 4:
                                Node = TView.Nodes.Add("检修项目");
                                break;
                            case 8:
                                Node = TView.Nodes.Add("个人权限树");
                                Node.ToolTipText = "双击末级节点,进行相应操作!";
                                Node.ImageIndex = 3;                            break;
                            case 10:
                                Node = TView.Nodes.Add("缺陷/故障编号");
                                break;
                            case 12:
                                Node = TView.Nodes.Add("巡视位置点");
                                break;
                            default :
                                Node = TView.Nodes.Add(Row["context"].ToString());
                                break;
                        }
                    }
                    else
                    {
                        Node = TView.Nodes[0];
                    }                switch (intI)
                    {
                        case 5:
                        case 9:
                            break;
                      default :
                            Node = Node.Nodes.Add(Row["context"].ToString());
                            break;
                    }                switch (intI)
                    {
                        case 0:
                            Node.Tag = Row["ShowID"].ToString();
                            break;
                        case 1:
                            Node.Tag = "SysTree";
                            break;
                        case 8:
                            //S100B.FormName + N'|' + S100B.Parameter
                            if (Row["FormDesc"].ToString().Length >0)
                                 Node.ToolTipText = Row["context"].ToString() +":" + Row["FormDesc"].ToString();                        if ( Row["FormName"].ToString().Length ==0)
                            {
                                Node.Tag = Row["ID"].ToString()+ '/' +"";
                                //Node.ImageIndex = 1;
                            }
                            else
                            {
                                Node.Tag = Row["ID"].ToString() + '/' + Row["FormName"].ToString() + '/' + Row["Parameter"].ToString();
                               // Node.ImageIndex = 2;
                            }                        //根据是否子节点,给定显示图像
                            if (Row["IsLeaf"].ToString() == "1")
                            {
                                Node.ImageIndex = 2;
                            }
                            else
                            {
                                Node.ImageIndex = 1;
                            }                        break;
                        default :
                            Node.Tag = Row["ID"].ToString();
                            //if (Row["IsLeaf"].ToString() == "1") Node.ForeColor = System.Drawing.Color.Blue;                        break;                }                if (vShowDetail > 0 && Row["IsLeaf"].ToString() == "1")
                    {
                        switch (intI)
                            {
                                case 0:
                                    GetDeviceWithSystemID(Node, Row["ShowID"].ToString(), intI);                            break ;
                                default :
                                    GetDeviceWithSystemID(Node, Row["ID"].ToString(), intI);                            break;
                            }
                    }                AddTree(TView, (Row["ID"].ToString()), Node, intI, Ds, vShowDetail);            } 
                
                else
                {
                     Node = pNode.Nodes.Add(Row["context"].ToString());
                     switch (intI)
                     {
                         case 0:
                             Node.Tag = Row["ShowID"].ToString();
                             break;
                         case 1:
                             Node.Tag = "SysTree";
                             break;
                         case 8:
                             if (Row["FormDesc"].ToString().Length > 0)
                                    Node.ToolTipText = Row["context"].ToString() + ":" + Row["FormDesc"].ToString();                         //S100B.FormName + N'|' + S100B.Parameter
                             if (Row["FormName"].ToString().Length == 0)
                             {
                                 Node.Tag = Row["ID"].ToString() + '/' + "";
                                // Node.ImageIndex = 1;
                             }
                             else
                             {
                                 Node.Tag = Row["ID"].ToString() + '/' + Row["FormName"].ToString() + '/' + Row["Parameter"].ToString();
                               //Node.ImageIndex = 2;
                             }                         //根据是否子节点,给定显示图像
                             if (Row["IsLeaf"].ToString() == "1")
                             {
                                 Node.ImageIndex = 2;
                             }
                             else
                             {
                                 Node.ImageIndex = 1;
                             }
                             break;
                         default:
                             Node.Tag = Row["ID"].ToString();
                             //if (Row["IsLeaf"].ToString() == "1") Node.ForeColor = System.Drawing.Color.Blue;
                             break;
                     }                   //是否显示明细内容(并且是子节点)
                    if (vShowDetail > 0 && Row["IsLeaf"].ToString ()=="1")
                    {
                        switch (intI)
                        {
                            case 0:
                                GetDeviceWithSystemID(Node, Row["ShowID"].ToString(), intI);                            break;
                            default:
                                GetDeviceWithSystemID(Node, Row["ID"].ToString(), intI);                            break;
                        }
                    }                AddTree(TView, (Row["ID"].ToString()), Node, intI, Ds, vShowDetail);
                    
                } 
                
            } 
       
        }