在asp.net中想做一个像论坛左栏一样的树形结构,咋做?数据村数据库读出。

解决方案 »

  1.   

    Ajax Tree:
    http://blog.csdn.net/ChengKing/archive/2006/08/27/1128545.aspx
      

  2.   

    asp.net 1.1 要下载树控件,2.0有现成的treeview,这个论坛好像用的是类是梅花雪的树形控件,如果是2.0的treeview,在msdn中又从数据库读数据的例子,我自己的一个,感觉很垃圾:
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ddlbll mybll = new ddlbll();
                DataTable mytab = mybll.GetKemu();
                foreach (DataRow row in mytab.Rows)
                {
                    TreeNode mynode = new TreeNode();
                    mynode.Text = row["KeMuName"].ToString();
                    mynode.Value = row["KeMuId"].ToString();
                    mynode.PopulateOnDemand = true;
                    mynode.NavigateUrl = "";
                    //mynode.SelectAction = TreeNodeSelectAction.Expand;
                    TreeView1.Nodes.Add(mynode);
                }
                
            }
        }
        protected void selectednodechang(object sender, EventArgs e)
        {
            TreeNode mynode = TreeView1.SelectedNode;
            switch (mynode.Depth)
            {
                case 0:
                    populatejiaocai(mynode);
                    break;
                case 1:
                    populateketi(mynode);
                    break;
                case 2:
                    navigatenode(mynode);
                    break;
            }
        }
        protected void populatejiaocai(TreeNode node)
        {
            ddlbll mybll = new ddlbll();
            DataTable mytab = mybll.GetJiaocai(Convert.ToInt32(node.Value));
            if (mytab.Rows.Count > 0)
            {
                foreach (DataRow row in mytab.Rows)
                {
                    TreeNode mynode = new TreeNode();
                    mynode.Text = row["JiaoCaiName"].ToString();
                    mynode.Value = row["JiaoCaiId"].ToString();
                    //mynode.PopulateOnDemand = true;
                    mynode.NavigateUrl = "";
                    node.ChildNodes.Add(mynode);
                }
                
            }
        }
        protected void populateketi(TreeNode node)
        {
            ddlbll mybll = new ddlbll();
            DataTable mytab = mybll.GetKeti(Convert.ToInt32(node.Value));
            if (mytab.Rows.Count > 0)
            {
                foreach (DataRow row in mytab.Rows)
                {
                    TreeNode mynode = new TreeNode();
                    mynode.Text = row["KeTiName"].ToString();
                    mynode.Value = row["KeTiId"].ToString();
                    mynode.NavigateUrl = "~/school/keti.aspx?kid=" + mynode.Value;
                    mynode.Target = "mainFrame";
                    
                    node.ChildNodes.Add(mynode);
                }
                node.Expand();
            }
        }
        protected void navigatenode(TreeNode node)
        { 
        
        }
    }
      

  3.   

    private void Tree()
    {
    //数型控件的运用步骤
    TreeNode treenode=new TreeNode();
    treenode.Expanded=false;
    TreeNodeCollection tree_coec=new TreeNodeCollection();
    TreeView1.Nodes.Clear();
    treenode.ID="nodes"; treenode.Text="<font size=2>xxxx</font>";
    treenode.ImageUrl = "images/treeimage/root.gif";
    treenode.ExpandedImageUrl = "images/treeimage/root.gif";
    treenode.NavigateUrl="Xsht.aspx?classid=-1";
    TreeView1.Nodes.Add(treenode);
    tree_coec=TreeView1.Nodes;
    creattree(tree_coec[tree_coec.Count - 1].Nodes, -1);
    } private void creattree(TreeNodeCollection nds,int id)
    {
    SqlDataReader ds=ad.method_1("select_class",id);
    while(ds.Read())
    {
    TreeNode treenode_p=new TreeNode();
    TreeNodeCollection tree_coec_p=new TreeNodeCollection();
    treenode_p.Text="<font size=2>" +ds["name"]+ "</font>";
    treenode_p.ImageUrl = "images/treeimage/folder.gif";
    treenode_p.ExpandedImageUrl = "images/treeimage/folderopen.gif";
    treenode_p.NavigateUrl = "Xsht.aspx?classid="+ ds["classid"];
    nds.Add(treenode_p);
    creattree(nds[nds.Count - 1].Nodes, Int32.Parse(ds["classid"].ToString()));
    }
    ds.Close();
    }