无限级treeview设计
数据库设计
aspx页面如下
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
using
System;
using System.Data;
using System.Configuration;
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.Text;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
if ( ! this .IsPostBack)
{
this .buildTree();
}
}
/// <summary>
/// 创建树
/// </summary>
private void buildTree()
{
DataSet ds = ExecuteDataSet( " select * from treetest " );
// 建立关系
ds.Relations.Add( " SortRelation " , ds.Tables[ 0 ].Columns[ " treeid " ], ds.Tables[ 0 ].Columns[ " treeparentid " ]);
// 遍历每行并根据数据行关系生成树
foreach (DataRow dbRow in ds.Tables[ 0 ].Rows)
{
if (dbRow.IsNull( " treeparentid " ))
{
string s = dbRow[ " treename " ].ToString();
TreeNode tn = new TreeNode(s);
tn.NavigateUrl = " # " ;
this .TreeView1.Nodes.Add(tn);
PopulateSubTree(dbRow, tn);
}
}
}
/// <summary>
/// 遍历子类
/// </summary>
/// <param name="dbRow"> 遍历的Row </param>
private void PopulateSubTree(DataRow dbRow, TreeNode tn)
{
foreach (DataRow childRow in dbRow.GetChildRows( " SortRelation " ))
{
string s = "" ;
s = childRow[ " treename " ].ToString();
TreeNode tn2 = new TreeNode(s);
tn.ChildNodes.Add(tn2);
PopulateSubTree(childRow, tn2);
}
}
#region 返回dataset对象
/// <summary>
/// 返回dataset对象
/// </summary>
/// <param name="sql"> sql语句 </param>
/// <returns></returns>
public DataSet ExecuteDataSet( string sql)
{
SqlConnection con = new SqlConnection( " server=.;database=treeviewtest;uid=sa;pwd=; " );
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
sda.Fill(ds);
return ds;
}
#endregion
}
using System.Data;
using System.Configuration;
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.Text;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
if ( ! this .IsPostBack)
{
this .buildTree();
}
}
/// <summary>
/// 创建树
/// </summary>
private void buildTree()
{
DataSet ds = ExecuteDataSet( " select * from treetest " );
// 建立关系
ds.Relations.Add( " SortRelation " , ds.Tables[ 0 ].Columns[ " treeid " ], ds.Tables[ 0 ].Columns[ " treeparentid " ]);
// 遍历每行并根据数据行关系生成树
foreach (DataRow dbRow in ds.Tables[ 0 ].Rows)
{
if (dbRow.IsNull( " treeparentid " ))
{
string s = dbRow[ " treename " ].ToString();
TreeNode tn = new TreeNode(s);
tn.NavigateUrl = " # " ;
this .TreeView1.Nodes.Add(tn);
PopulateSubTree(dbRow, tn);
}
}
}
/// <summary>
/// 遍历子类
/// </summary>
/// <param name="dbRow"> 遍历的Row </param>
private void PopulateSubTree(DataRow dbRow, TreeNode tn)
{
foreach (DataRow childRow in dbRow.GetChildRows( " SortRelation " ))
{
string s = "" ;
s = childRow[ " treename " ].ToString();
TreeNode tn2 = new TreeNode(s);
tn.ChildNodes.Add(tn2);
PopulateSubTree(childRow, tn2);
}
}
#region 返回dataset对象
/// <summary>
/// 返回dataset对象
/// </summary>
/// <param name="sql"> sql语句 </param>
/// <returns></returns>
public DataSet ExecuteDataSet( string sql)
{
SqlConnection con = new SqlConnection( " server=.;database=treeviewtest;uid=sa;pwd=; " );
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
sda.Fill(ds);
return ds;
}
#endregion
}
显示结果