.Net中實(shí)現(xiàn)無(wú)限分類的2個(gè)例子
以前總想著搞這個(gè)無(wú)限分類,今天終于得空好好的看了下,發(fā)現(xiàn)實(shí)現(xiàn)的原理還是很簡(jiǎn)單的,數(shù)據(jù)結(jié)構(gòu)上,用兩列(分類編號(hào),上級(jí)編號(hào))就可以實(shí)現(xiàn),可是為了聯(lián)合查詢的方便,一般都再增加一列(深度),在這個(gè)實(shí)例里,我只用了兩列,剩下的無(wú)非就是遞歸著對(duì)TreeView進(jìn)行數(shù)據(jù)綁定而已~~。
public partial class _Default : System.Web.UI.Page
{
BIL bil = new BIL();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind_tree("0",null);
}
}
protected void bind_tree(string ChildNode,TreeNode tn)
{
DataTable dt = bil.GetByClassPre(ChildNode).Tables[0];
foreach (DataRow dr in dt.Rows)
{
TreeNode Node = new TreeNode();
if (tn==null)
{
//根
Node.Text = dr["ClassName"].ToString();
this.TreeView1.Nodes.Add(Node);
bind_tree(dr["ClassId"].ToString(), Node);
}
else
{
//當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)
Node.Text = dr["ClassName"].ToString();
tn.ChildNodes.Add(Node);
bind_tree(dr["ClassId"].ToString(),Node);
}
}
}
}
上次寫(xiě)了使用TreeView控件進(jìn)行無(wú)限分類綁定的方法,這回再寫(xiě)個(gè)通用性更好的~~嘿嘿 綁定DropDownList~~思想跟上篇日志很接近,也是使用遞歸,當(dāng)然,網(wǎng)絡(luò)上還有很多人給數(shù)據(jù)庫(kù)增加了一個(gè)“Depth(深度)”的字段,這樣進(jìn)行綁定的時(shí)候還可以更簡(jiǎn)單些哈~~當(dāng)然,沒(méi)有必要的就不加了,還是遞歸使用起來(lái)簡(jiǎn)單些哈~~不多說(shuō)了,上代碼哈:
protected void bind_droplist(string ChildNode, string tmp)
{
DataTable dt = bil.GetByClassPre(ChildNode).Tables[0];
foreach (DataRow dr in dt.Rows)
{
if (dr["ClassPre"].ToString()=="0")
{
//如果是根節(jié)點(diǎn)
tmp = "";
DropDownList1.Items.Add(dr["ClassName"].ToString());
bind_droplist(dr["ClassId"].ToString(), tmp + " ");
}
else
{
//不是根節(jié)點(diǎn)
DropDownList1.Items.Add( tmp+"|-" + dr["ClassName"].ToString());
bind_droplist(dr["ClassId"].ToString(), tmp + " ");
}
}
}
相關(guān)文章
解析ASP.NET?Core中Options模式的使用及其源碼
這篇文章主要介紹了ASP.NET?Core中Options模式的使用及其源碼解析,在ASP.NET Core中引入了Options這一使用配置方式,其主要是為了解決依賴注入時(shí)需要傳遞指定數(shù)據(jù)問(wèn)題(不是自行獲取,而是能集中配置),需要的朋友可以參考下2022-03-03asp.net基礎(chǔ)學(xué)習(xí)之控件的使用方法
這篇文章主要為大家詳細(xì)介紹了asp.net基礎(chǔ)學(xué)習(xí)之控件的使用方法,感興趣的小伙伴們可以參考一下2016-08-08Datalist控件使用存儲(chǔ)過(guò)程來(lái)分頁(yè)實(shí)現(xiàn)代碼
.net使用過(guò)程中,數(shù)據(jù)多的時(shí)候需要分頁(yè),本文將介紹如何使用存儲(chǔ)過(guò)程來(lái)分頁(yè),需要的朋友可以了解下2012-12-12Asp.net XML文檔進(jìn)行添加刪改操作的實(shí)例代碼
Asp.net 對(duì)一下XML文檔進(jìn)行添加刪改的實(shí)例2009-12-12ASP.NET中實(shí)現(xiàn)文件的保護(hù)性下載基礎(chǔ)篇
許多時(shí)候,我們需要在因特網(wǎng)上提供文件下載服務(wù),但是又要防止未經(jīng)授權(quán)的下載,這時(shí)該怎么辦?本文將為讀者詳細(xì)介紹一種使用ASP.NET實(shí)現(xiàn)的HTTP處理程序的解決方案。2011-02-02.NET中獲取Access新增記錄Id怪現(xiàn)象解決方法
寫(xiě)了一個(gè)函數(shù)獲取Access表中指定用戶Id,要求當(dāng)傳入的用戶名不存在時(shí),則在表中新增一條記錄并返回Id2012-03-03.NET/C#如何判斷某個(gè)類是否是泛型類型或泛型接口的子類型詳解
這篇文章主要給大家介紹了關(guān)于.NET/C#如何判斷某個(gè)類是否是泛型類型或泛型接口的子類型的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧2018-09-09