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
{
System.Text.StringBuilder sb = new StringBuilder();
// 默认深度1;
public int i = 1 ;
protected void Page_Load( object sender, EventArgs e)
{
if ( ! this .IsPostBack)
{
this .buildTree();
}
}
/// <summary>
/// 创建树
/// </summary>
private void buildTree()
{
DataSet ds = ExecuteDataSet( " select * from Sort " );
// 建立关系
ds.Relations.Add( " SortRelation " , ds.Tables[ 0 ].Columns[ " SortId " ], ds.Tables[ 0 ].Columns[ " ParentSortId " ]);
// 遍历每行并根据数据行关系生成树
foreach (DataRow dbRow in ds.Tables[ 0 ].Rows)
{
if (dbRow.IsNull( " ParentSortId " ))
{
string s = CreateNode(dbRow[ " SortName " ].ToString());
sb.Append(s);
PopulateSubTree(dbRow,i);
}
}
this .Response.Write(sb);
}
/// <summary>
/// 遍历子类
/// </summary>
/// <param name="dbRow"> 遍历的Row </param>
/// <param name="depth"> 深度(用于显示空格个数) </param>
private void PopulateSubTree(DataRow dbRow, int depth)
{
++ depth;
foreach (DataRow childRow in dbRow.GetChildRows( " SortRelation " ))
{
string s = "" ;
for ( int j = 1 ;j <= depth;j ++ )
{
s = "   " + s;
}
s += " |- " + childRow[ " SortName " ].ToString() + " <br> " ;
sb.Append(s);
PopulateSubTree(childRow,depth);
}
}
/// <summary>
/// 显示父类名称
/// </summary>
/// <param name="sortname"> 类别名称 </param>
/// <returns></returns>
private string CreateNode( string sortname)
{
string s = " |- " + sortname + " <br> " ;
return s;
}
#region 返回dataset对象
/// <summary>
/// 返回dataset对象
/// </summary>
/// <param name="sql"> sql语句 </param>
/// <returns></returns>
public DataSet ExecuteDataSet( string sql)
{
SqlConnection con = new SqlConnection( " server=.;database=sort;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
{
System.Text.StringBuilder sb = new StringBuilder();
// 默认深度1;
public int i = 1 ;
protected void Page_Load( object sender, EventArgs e)
{
if ( ! this .IsPostBack)
{
this .buildTree();
}
}
/// <summary>
/// 创建树
/// </summary>
private void buildTree()
{
DataSet ds = ExecuteDataSet( " select * from Sort " );
// 建立关系
ds.Relations.Add( " SortRelation " , ds.Tables[ 0 ].Columns[ " SortId " ], ds.Tables[ 0 ].Columns[ " ParentSortId " ]);
// 遍历每行并根据数据行关系生成树
foreach (DataRow dbRow in ds.Tables[ 0 ].Rows)
{
if (dbRow.IsNull( " ParentSortId " ))
{
string s = CreateNode(dbRow[ " SortName " ].ToString());
sb.Append(s);
PopulateSubTree(dbRow,i);
}
}
this .Response.Write(sb);
}
/// <summary>
/// 遍历子类
/// </summary>
/// <param name="dbRow"> 遍历的Row </param>
/// <param name="depth"> 深度(用于显示空格个数) </param>
private void PopulateSubTree(DataRow dbRow, int depth)
{
++ depth;
foreach (DataRow childRow in dbRow.GetChildRows( " SortRelation " ))
{
string s = "" ;
for ( int j = 1 ;j <= depth;j ++ )
{
s = "   " + s;
}
s += " |- " + childRow[ " SortName " ].ToString() + " <br> " ;
sb.Append(s);
PopulateSubTree(childRow,depth);
}
}
/// <summary>
/// 显示父类名称
/// </summary>
/// <param name="sortname"> 类别名称 </param>
/// <returns></returns>
private string CreateNode( string sortname)
{
string s = " |- " + sortname + " <br> " ;
return s;
}
#region 返回dataset对象
/// <summary>
/// 返回dataset对象
/// </summary>
/// <param name="sql"> sql语句 </param>
/// <returns></returns>
public DataSet ExecuteDataSet( string sql)
{
SqlConnection con = new SqlConnection( " server=.;database=sort;uid=sa;pwd=; " );
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
sda.Fill(ds);
return ds;
}
#endregion
}