ASP。NET  C#语言编写,TreeView从数据库中读取字段生成树。树的效果效果类似于CSDN论坛的。。谢谢

解决方案 »

  1.   


     TreeView t = new TreeView();
      TreeNode td=new  System.Web.UI.WebControls.TreeNode("text","value"); //这样绑定就可以了
       t.Nodes.Add(td);
      

  2.   


    function CreateClassTree(aParent: TTreeNode; 
    Level: integer; SLevel, SText,Scode: TStrings;aClassTree:TTreeNodes;aLevelWord:String): boolean; 
    var 
    I:integer; 
    TempNode:TTreeNode; 
    begin 
    Result:=False; //TempNode:=TTreeNode.Create(Nil); For i:=0 to Slevel.Count-1 do 
    begin 
    //添加子结点 
    //是否符合级别 
    if length(Slevel.Strings[i])=(level+1)*3 then 
    if level=0 then 
    begin 
    TempNode:=aclassTree.Add(aparent,sText.Strings[i]+'('+Scode.Strings[i]+')'); 
    CreateClassTree(tempnode,level+1,Slevel,stext,Scode,aclasstree,Slevel.Strings[i]); 
    Result:=True; 
    end 
    else 
    begin 
    if copy(slevel.Strings[i],0,level*3)=aLevelWord then 
    begin 
    TempNode:=aclassTree.AddChild(aparent,sText.Strings[i]+'('+Scode.Strings[i]+')'); 
    CreateClassTree(tempnode,level+1,Slevel,stext,sCode,aclasstree,Slevel.Strings[i]); 
    Result:=True; 
    end; 
    end; 
    end; 
    //tempnode.Free; end; //深度优先算法建子树 Function CreateBomTree(aParent:TTreeNode;aTblBomCName,aMFieldName,aCFieldName,aRootName:String;aAdoConn:tAdoconnection;aTree:TTreeNOdes):Boolean; 
    var 
    i:integer; 
    TempNode:TTreeNode; 
    TempQry:TAdoQuery; 
    begin 
    Result:=False; 
    TempQry:=TAdoQuery.Create(nil); Try 
    //找子结点 
    TempQry.Active:=False; 
    TempQry.SQL.Clear; 
    TempQry.SQL.Add('Select '+aCFieldName); 
    TempQry.SQL.Add(' From '+aTBlBomCName); 
    Tempqry.sql.Add(' where '+aMFieldName+'='''+aRootName+''''); 
    TempQry.Active:=true; //递归找子树 
    if TempQry.RecordCount>0 then 
    begin 
    TempQry.FindFirst; 
    for i:=1 to TempQry.RecordCount do 
    begin 
    TempNode:=aTree.AddChild(aParent,TempQry.Fieldbyname(aCFieldName).AsString); 
    CreateBomTree(TempNode,atblBomcName,aMFieldName,aCFieldName,TempNode.Text,aAdoconn,aTree); 
    TempQry.Next; 
    end; 
    end; 
    result:=True; 
    Finally 
    TempQry.Free; 
    end; end;
      

  3.   

    [code=C#]    //页面
      <asp:TreeView ID="TreeView1" runat="server" Font-Size="12px" ForeColor="Black" ShowLines="True"
                    ExpandDepth="0">
                    <ParentNodeStyle ImageUrl="~/Images/Menu/leaf.gif" />
                    <RootNodeStyle ImageUrl="~/Images/Menu/folderOpen.gif" />
                    <LeafNodeStyle ImageUrl="~/Images/Menu/file.JPG" />
                </asp:TreeView>
        //后台代码
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                bindTv();
            }
        }
        DataTable ds;
        public void bindTv()
        {
            string sql = "select * from cj_sjd order by currentid";
            ds = ST_DBA_YJ.DataTable(sql, "gat_zhpt");
            AddTree(0, (TreeNode)null);
        }
        public void AddTree(int ParentID, TreeNode pNode)
        {        DataView dvTree = new DataView(ds);
            string Fstr = "ParentID='" + ParentID + "'";
            dvTree.RowFilter = Fstr;
            foreach (DataRowView Row in dvTree)
            {
                TreeNode Node = new TreeNode();
                if (pNode == null)
                {
                    Node.Value = Row["currentid"].ToString();
                    Node.Text = Row["name"].ToString();
                    Node.SelectAction = TreeNodeSelectAction.Expand;
                    TreeView1.Nodes.Add(Node);
                    AddTree(Int32.Parse(Row["currentid"].ToString()), Node);
                }
                else
                {
                    Node.Value = Row["currentid"].ToString();
                    Node.Text = Row["name"].ToString();
                    Node.NavigateUrl = Row["URL"].ToString();
                    Node.Target = "main";
                    Node.SelectAction = TreeNodeSelectAction.Expand;
                    pNode.ChildNodes.Add(Node);
                    AddTree(Int32.Parse(Row["currentid"].ToString()), Node);
                }
            }
        }[/code
      

  4.   

    http://blog.csdn.net/baby97/archive/2009/06/18/4278376.aspx
      

  5.   

    protected void Page_Load(object sender, EventArgs e)
      {
      SqlConnection SqlCon = DB.getSqlCon();
      SqlCommand cmdbig = new SqlCommand("select BigClassID,BigClassName from BigClass", SqlCon);
      SqlDataAdapter sda = new SqlDataAdapter(cmdbig);
      DataSet ds = new DataSet();
      sda.Fill(ds, "BigClass");  SqlCommand cmdsmall = new SqlCommand("select BigClassID,SmallClassID,SmallClassName from SmallClass", SqlCon);
      sda.SelectCommand = cmdsmall;   
      sda.Fill(ds, "SmallClass");  DataRelation drl = new DataRelation ("bigsmall",ds.Tables["BigClass"].Columns["BigClassID"],ds.Tables["SmallClass"].Columns["BigClassID"]);
      ds.Relations.Add(drl);
      SqlCon.Close();
      InitTree(ds);
      }
      protected void InitTree( DataSet ds)
      {
      this.TreeView.Nodes.Clear();
      foreach (DataRow drBig in ds.Tables["BigClass"].Rows)
      {
      TreeNode RootNode = new TreeNode(drBig["BigClassName"].ToString(),drBig["BigClassID"].ToString());
      RootNode.Value = drBig["BigClassID"].ToString();
      RootNode.Expanded = true;
      RootNode.NavigateUrl = "~/ClassList.aspx?BigClassID=" + RootNode.Value;
      RootNode.Target = "myframe";
        
      this.TreeView.Nodes.Add(RootNode);
      foreach (DataRow drSmall in drBig.GetChildRows("bigsmall"))
      {
      TreeNode SubNode = new TreeNode(drSmall["SmallClassName"].ToString(), drSmall["SmallClassID"].ToString());
      SubNode.Value = drSmall["SmallClassID"].ToString();
      SubNode.Expanded = true;  SubNode.NavigateUrl = "~/CardList.aspx?SmallClassID=" + SubNode.Value;
      SubNode.Target = "myframe";
        
      RootNode.ChildNodes.Add(SubNode);
      }   
     
      }   
      }
      

  6.   

    VS自己带的就用TreeView吧?好像就是节点那前有个图片,加上就是了,按节点儿的级别,分别加载不同的图片儿。我猜是这么回事儿。