treeview 无限级别绑定并控制收缩层次

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 System.ComponentModel;

public partial class UserControl_prlist : System.Web.UI.UserControl
{
    
protected void Page_Load(object sender, EventArgs e)
    {
        
//if (IsPostBack)
        
//{

            Hisidon.Components.DB db 
= new Hisidon.Components.DB();
            
this.ViewState["ds"= db.getDataSet("select * from 产品类别表 order BY 排序");
            db.Free();
            TreeView1.Nodes.Clear();
            AddTree(
0, (TreeNode)null);

          
//  TreeView1.CollapseAll();

           
//展开2层
           
// TreeNodeCollection collection = TreeView1.Nodes;
            
            
            
//foreach (TreeNode node in collection)
            
//{
            
//     node.Expand();
            
//}
            
//收缩所有
            ExpandNodes(TreeView1, false);

            bindclass();
  
    }

    
public void ExpandNodes(TreeView treeview, bool Expand)
    {
        
foreach (TreeNode n in treeview.Nodes)
        {
            n.Expanded 
= Expand;
          
//  ExpandNodes(n, Expand);
        }
    }
    
public string isclass()
    {
        
if (Repeater2.Items.Count == 0)
        {
            
return "暂无类别";
        }
        
return "";
    }
    
void bindclass()
    {
        Hisidon.Components.DB db 
= new Hisidon.Components.DB();
        db.bindRepeater(
"SELECT [产品类别名称], [产品类别编号], [品牌图标] FROM [产品类别表] where 品牌图标 <>'' and 是否推荐 =1 ORDER BY [排序]",Repeater2);

        db.Free();
    }
    
//递归添加树的节点
    public void AddTree(int ParentID, TreeNode pNode)
    {
        DataSet ds 
= (DataSet)this.ViewState["ds"];
        DataView dvTree 
= new DataView(ds.Tables[0]);

        
//过滤父编号,得到当前的所有子节点
        dvTree.RowFilter = "[上级父编号] = " + ParentID;

        
foreach (DataRowView Row in dvTree)
        {
            TreeNode Node 
= new TreeNode();
            
if (pNode == null)
            {    
//添加根节点
                Node.Text = Row["产品类别名称"].ToString();

                Node.NavigateUrl 
= "../class.aspx?classid=" + Row["产品类别编号"].ToString();

                TreeView1.Nodes.Add(Node);
                Node.Expanded 
= true;
                AddTree(Int32.Parse(Row[
"产品类别编号"].ToString()), Node);        //再次递归
            }
            
else
            {   
//̀添加当前节点的子节点
                Node.Text = Row["产品类别名称"].ToString();
                Node.NavigateUrl 
= "../class.aspx?classid=" + Row["产品类别编号"].ToString();

                pNode.ChildNodes.Add(Node);
                Node.Expanded 
= true;
                AddTree(Int32.Parse(Row[
"产品类别编号"].ToString()), Node);     //再次递归
            }
        }
    }
}
 
posted @ 2008-08-05 14:41  AutumnWind  阅读(525)  评论(0编辑  收藏  举报