Asp.net 無(wú)限級(jí)分類(lèi)實(shí)例代碼
更新時(shí)間:2008年07月03日 09:10:20 作者:
近期做的一個(gè)網(wǎng)站需要一個(gè)無(wú)限級(jí)下拉列表的無(wú)限級(jí)分級(jí)功能,于是就有了下面的小作品。
開(kāi)始以為無(wú)限級(jí)下拉列表功能應(yīng)該很簡(jiǎn)單,無(wú)非就是用一個(gè)遞歸算法就好啦,但是在做起來(lái)的時(shí)候卻會(huì)遇到一些比較模糊的東西。
在網(wǎng)上找了很久也沒(méi)有找到例子,沒(méi)辦法了,想偷懶也偷不成了,還是自己老老實(shí)實(shí)的寫(xiě)一個(gè)吧。不多廢話(huà),下面請(qǐng)看我做的詳細(xì)方法。
1。無(wú)限級(jí)分類(lèi)肯定要數(shù)據(jù)庫(kù)支持啦,用戶(hù)可以動(dòng)態(tài)添加他們的分類(lèi)嘛,下面是數(shù)據(jù)庫(kù)的結(jié)構(gòu):

數(shù)據(jù)庫(kù)主要有三個(gè)字段,這是最基本的了。第一個(gè)是主鍵,第二個(gè)是分類(lèi)的名稱(chēng)了,第三個(gè)是父級(jí)目錄id號(hào)。
2。成品的效果圖:(大家最關(guān)心的是不是這個(gè)?。靠纯词鞘裁礃幼釉倏闯绦蛟趺窗桑?

看??!就長(zhǎng)這個(gè)模樣啦,這個(gè)層次關(guān)系就是上面那個(gè)數(shù)據(jù)所顯示的結(jié)果。怎么樣?還行吧。。。
3。最后就是提供程序咯,程序其實(shí)就是一個(gè)遞歸算法。
private void GetArticleCategory(string pid)
{
SqlConnection conn = new SqlConnection("server=.;database=test;uid=sa;pwd=;");
string sql = "select Articlesgroup_id,Groupname from Articlesgroup where Articlesgroup_parent_id=@pid order by Groupname";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlParameter Pid = new SqlParameter("@pid", SqlDbType.Int);
Pid.Value = pid;
cmd.Parameters.Add(Pid);
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
this.DropDownList1.Items.Add(new ListItem(toadd + " " + sdr[1].ToString(), sdr[0].ToString()));
toadd += "─┴";
this.GetArticleCategory(sdr[0].ToString());
toadd = toadd.Substring(0, toadd.Length - 2); //開(kāi)始這里沒(méi)有處理好,層次關(guān)系顯示不出來(lái) :)
}
sdr.Close();
conn.Close();
}
調(diào)用方法:在Page_Load里調(diào)用
protected void Page_Load(object sender, EventArgs e)
{
this.keyword.Attributes.Add("onfocus","if( this.value=='key key key') {this.value='' };");
if (!Page.IsPostBack)
{
this.GetArticleCategory("0");
}
this.DropDownList1.Items.Insert(0, new ListItem("Search All", "all"));
}
在類(lèi)里邊還要定義一個(gè)變量
private string toadd = "├";
1。無(wú)限級(jí)分類(lèi)肯定要數(shù)據(jù)庫(kù)支持啦,用戶(hù)可以動(dòng)態(tài)添加他們的分類(lèi)嘛,下面是數(shù)據(jù)庫(kù)的結(jié)構(gòu):

數(shù)據(jù)庫(kù)主要有三個(gè)字段,這是最基本的了。第一個(gè)是主鍵,第二個(gè)是分類(lèi)的名稱(chēng)了,第三個(gè)是父級(jí)目錄id號(hào)。
2。成品的效果圖:(大家最關(guān)心的是不是這個(gè)?。靠纯词鞘裁礃幼釉倏闯绦蛟趺窗桑?

看??!就長(zhǎng)這個(gè)模樣啦,這個(gè)層次關(guān)系就是上面那個(gè)數(shù)據(jù)所顯示的結(jié)果。怎么樣?還行吧。。。
3。最后就是提供程序咯,程序其實(shí)就是一個(gè)遞歸算法。
復(fù)制代碼 代碼如下:
private void GetArticleCategory(string pid)
{
SqlConnection conn = new SqlConnection("server=.;database=test;uid=sa;pwd=;");
string sql = "select Articlesgroup_id,Groupname from Articlesgroup where Articlesgroup_parent_id=@pid order by Groupname";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlParameter Pid = new SqlParameter("@pid", SqlDbType.Int);
Pid.Value = pid;
cmd.Parameters.Add(Pid);
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
this.DropDownList1.Items.Add(new ListItem(toadd + " " + sdr[1].ToString(), sdr[0].ToString()));
toadd += "─┴";
this.GetArticleCategory(sdr[0].ToString());
toadd = toadd.Substring(0, toadd.Length - 2); //開(kāi)始這里沒(méi)有處理好,層次關(guān)系顯示不出來(lái) :)
}
sdr.Close();
conn.Close();
}
調(diào)用方法:在Page_Load里調(diào)用
復(fù)制代碼 代碼如下:
protected void Page_Load(object sender, EventArgs e)
{
this.keyword.Attributes.Add("onfocus","if( this.value=='key key key') {this.value='' };");
if (!Page.IsPostBack)
{
this.GetArticleCategory("0");
}
this.DropDownList1.Items.Insert(0, new ListItem("Search All", "all"));
}
在類(lèi)里邊還要定義一個(gè)變量
復(fù)制代碼 代碼如下:
private string toadd = "├";
您可能感興趣的文章:
- mysql 無(wú)限級(jí)分類(lèi)實(shí)現(xiàn)思路
- php實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)(遞歸方法)
- php 無(wú)限級(jí)分類(lèi),超級(jí)簡(jiǎn)單的無(wú)限級(jí)分類(lèi),支持輸出樹(shù)狀圖
- php實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)查詢(xún)(遞歸、非遞歸)
- php實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)
- ThinkPHP無(wú)限級(jí)分類(lèi)原理實(shí)現(xiàn)留言與回復(fù)功能實(shí)例
- winform樹(shù)形菜單無(wú)限級(jí)分類(lèi)實(shí)例
- ASP 無(wú)限級(jí)分類(lèi)實(shí)現(xiàn)
- php+mysql實(shí)現(xiàn)無(wú)限級(jí)分類(lèi) | 樹(shù)型顯示分類(lèi)關(guān)系
- thinkphp5實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)
相關(guān)文章
Asp.net下用JQuery找出哪一個(gè)元素引起PostBack
在Asp.net webform中,如何找出哪一個(gè)按鈕觸發(fā)Button PostBack事件。2010-06-06
ASP.NET?MVC實(shí)現(xiàn)區(qū)域路由
這篇文章介紹了ASP.NET?MVC實(shí)現(xiàn)區(qū)域路由的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
ASP.Net MVC_DotNetZip簡(jiǎn)單使用方法,解決文件壓縮的問(wèn)題
下面小編就為大家?guī)?lái)一篇ASP.Net MVC_DotNetZip簡(jiǎn)單使用方法,解決文件壓縮的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
在Asp.net core中實(shí)現(xiàn)websocket通信
這篇文章介紹了在Asp.net core中實(shí)現(xiàn)websocket通信的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
Asp.net中的數(shù)據(jù)綁定Eval和Bind應(yīng)用示例
這篇文章主要介紹了Asp.net中的數(shù)據(jù)綁定Eval和Bind的應(yīng)用,需要的朋友可以參考下2014-05-05
實(shí)例說(shuō)明asp.net中的簡(jiǎn)單角色權(quán)限控制
權(quán)限控制在信息管理中屬于基本功能,權(quán)限控制中其中以Window權(quán)限為模型的角色用戶(hù)(也稱(chēng)用戶(hù)組用戶(hù))模型使用較多。本文以網(wǎng)站管理后臺(tái)權(quán)限控制為例簡(jiǎn)要說(shuō)明。2009-10-10

