asp.net使用datatable实现无限级分类
关键点:datatable.select方法
速度应该比其它递归读取数据库要快.
static string _TreeList = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlConnection conn = SqlHelper.dbconn();
try
{
conn.Open();
DataTable dt = SqlHelper.ExecuteDataTable(conn, "select * from DyjGroup");
DateTime startTime = System.DateTime.Now;
string _class = string.Empty;
_class = "<table>";
_class += this.Tree(dt, 0);
_class += "</table>";
show.Text = _class;
_TreeList = "";
DateTime endTime = System.DateTime.Now;
Response.Write(endTime - startTime);
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
conn.Close();
}
}
}
protected string Tree(DataTable dt, int _condition)
{
DataRow[] _TreeDr = dt.Select("[parent]="+_condition);
for (int i = 0; i < _TreeDr.Length; i++)
{
_TreeList += "<tr><td>" + MakeFelgefu(_condition) + _TreeDr[i]["GroupName"].ToString()+"</td></tr>";
Tree(dt, (int)_TreeDr[i]["GroupId"]);//
}
return _TreeList;
}
/// <summary>
/// Make分隔符
/// </summary>
/// <param name="count"></param>
/// <returns></returns>
private string MakeFelgefu(int count)
{
string Returnwords = string.Empty;
if (count == 0)
{
Returnwords = "";
}
else
{
Returnwords = ("├").PadLeft(count, ' ');
}
return Returnwords;
}