摘要:[ASP.NET]樹狀顯示(子→父)
這幾天因應公司需求!!想到得一個寫法...
也許各位大大都已經有更好的方法!!..但就分享出來...
假設我們現在已經在某一個子類別!!想要找他的父類別到最終的根類別...顯示在上面
就像YAHOO拍賣一樣!!假設我再看YAMAHA的重機
我希望看到上面有Y拍>交通工具>機車>大型重機>YAMAHA
string NameHierarchy(string ParentCategoryID)
{
string ttl = "";
string TempCategoryID="";
string GID="";
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.AppSettings["Conn"];
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select a.CategoryName,a.ParentCategoryID,a.GID,a.DisplayOrder from dbo.Category as a where CategoryID=@CategoryID order by DisplayOrder";
cmd.Parameters.Add("@CategoryID", SqlDbType.Int);
cmd.Parameters["@CategoryID"].Value = ParentCategoryID;
try
{
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
Name = dr[0].ToString();
TempCategoryID = dr[1].ToString();
GID=dr[2].ToString();
}
}
//遞回...當不是主類別時...就一直呼叫自己
//當進到最底層時開始回傳名稱串起來的字串
if (TempCategoryID != "0")
{ //不是最底層時!!會先跑這個...然後再呼叫自己!!...
ttl += NameHierarchy(TempCategoryID);
ttl += "" + Name + ";
}
else
{
//最底層會跑這個..因為是最底層只要先呼叫遊戲的名稱再把自己的名稱相串
ttl += "" + Name + "";
}
}
catch (Exception ex)
{ Response.Write(ex.Message); }
finally { conn.Close(); }
return ttl;
}
只要使用時丟入自己的ID這樣就可以建立階層的類別查詢子到父