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); //再次递归
}
}
}
}
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); //再次递归
}
}
}
}