.NET无限级分类
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
}