asp.net實(shí)現(xiàn)DropDownList,TreeView,ListBox的無(wú)限極分類(lèi)目錄樹(shù)
本文實(shí)例講述了asp.net實(shí)現(xiàn)DropDownList,TreeView,ListBox的無(wú)限極分類(lèi)目錄樹(shù)。分享給大家供大家參考,具體如下:
#region DropDownList無(wú)限遞歸顯示層次關(guān)系
/// <summary>
/// 創(chuàng)建無(wú)限分級(jí)下拉列表框
/// </summary>
/// <param name="ddlst">下拉控件</param>
/// <param name="dt">源DataTable</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
public static void CreateLevelDropDown(DropDownList ddlst, DataTable dt, string text, string value, string parentid)
{
ArrayList allItems = new ArrayList();
DataRow[] rows = dt.Select(parentid + "=0");
foreach (DataRow row in rows)
CreateLevelDropDownAssistant(dt, ref allItems, row, string.Empty, text, value, parentid);
ListItem[] items = new ListItem[allItems.Count];
allItems.CopyTo(items);
ddlst.Items.AddRange(items);
}
/// <summary>
/// 遞歸綁定子節(jié)點(diǎn)
/// </summary>
/// <param name="dt">源DataTable</param>
/// <param name="items">數(shù)組</param>
/// <param name="parentRow">當(dāng)前節(jié)點(diǎn)</param>
/// <param name="curHeader">前綴</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
private static void CreateLevelDropDownAssistant(DataTable dt, ref ArrayList items, DataRow parentRow, string curHeader, string text, string value, string parentid)
{
ListItem newItem = new ListItem(curHeader + Until.CutString(parentRow[text].ToString(), 18, true), parentRow[value].ToString());
items.Add(newItem);
DataRow[] rows = dt.Select(parentid + "=" + newItem.Value);
for (int i = 0; i < rows.Length - 1; i++)
CreateLevelDropDownAssistant(dt, ref items, rows[i], curHeader.Replace("┣", "┃").Replace("┗", "┣") + "┣", text, value, parentid);
if (rows.Length > 0)
CreateLevelDropDownAssistant(dt, ref items, rows[rows.Length - 1], curHeader.Replace("┣", "┃").Replace("┗", "┣") + "┗", text, value, parentid);
}
#endregion
#region TreeView 無(wú)限遞歸顯示層次關(guān)系目錄樹(shù)
/// <summary>
/// 創(chuàng)建無(wú)限分級(jí)目錄樹(shù)TreeView
/// </summary>
/// <param name="treeview">TreeView空間</param>
/// <param name="dt">數(shù)據(jù)源DataTable</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
public static void CreateLevelTreeView(TreeView treeview, DataTable dt, string text, string value, string parentid)
{
DataView dv = dt.DefaultView;
dv.RowFilter = parentid + "=0";
foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode();
node.Text = drv[text].ToString();
node.Value = drv[value].ToString();
node.Expanded = false;
treeview.Nodes.Add(node);
CreatTreeViewChildNode(dv, node, text, value, parentid);
}
}
/// <summary>
/// 遞歸綁定子節(jié)點(diǎn)
/// </summary>
/// <param name="dv">源DataView</param>
/// <param name="parentNode">當(dāng)前節(jié)點(diǎn)</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
private static void CreatTreeViewChildNode(DataView dv, TreeNode parentNode, string text, string value, string parentid)
{
dv.RowFilter = parentid + "=" + parentNode.Value;
foreach (DataRowView row in dv)
{
TreeNode replyNode = new TreeNode();
replyNode.Text = row[text].ToString();
replyNode.Value = row[value].ToString();
replyNode.Expanded = false;
parentNode.ChildNodes.Add(replyNode);
CreatTreeViewChildNode(dv, replyNode, text, value, parentid);
}
}
/// <summary>
/// 創(chuàng)建無(wú)限分級(jí)目錄樹(shù)TreeView
/// </summary>
/// <param name="treeview">TreeView空間</param>
/// <param name="dt">數(shù)據(jù)源DataTable</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="url">url字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
public static void CreateLevelTreeView(TreeView treeview, DataTable dt, string text, string value, string url, string parentid)
{
DataView dv = dt.DefaultView;
dv.RowFilter = parentid + "=0";
foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode();
node.Text = drv[text].ToString();
node.Value = drv[value].ToString();
node.NavigateUrl = drv[url].ToString();
node.Expanded = false;
treeview.Nodes.Add(node);
CreatTreeViewChildNode(dv, node, text, value, url, parentid);
}
}
/// <summary>
/// 遞歸綁定子節(jié)點(diǎn)
/// </summary>
/// <param name="dv">源DataView</param>
/// <param name="parentNode">當(dāng)前節(jié)點(diǎn)</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="url">url字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
private static void CreatTreeViewChildNode(DataView dv, TreeNode parentNode, string text, string value, string url, string parentid)
{
dv.RowFilter = parentid + "=" + parentNode.Value;
foreach (DataRowView row in dv)
{
TreeNode replyNode = new TreeNode();
replyNode.Text = row[text].ToString();
replyNode.Value = row[value].ToString();
replyNode.NavigateUrl = row[url].ToString();
replyNode.Expanded = false;
parentNode.ChildNodes.Add(replyNode);
CreatTreeViewChildNode(dv, replyNode, text, value, url, parentid);
}
}
#endregion
#region 創(chuàng)建無(wú)限分級(jí)ListBox
/// <summary>
/// 創(chuàng)建無(wú)限分級(jí)ListBox
/// </summary>
/// <param name="ddlst">ListBox控件</param>
/// <param name="dt">源DataTable</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
public static void CreateLevelListBox(ListBox ddlst, DataTable dt, string text, string value, string parentid)
{
ArrayList allItems = new ArrayList();
DataRow[] rows = dt.Select(parentid + "=0");
foreach (DataRow row in rows)
CreateLevelListBoxAssistant(dt, ref allItems, row, string.Empty, text, value, parentid);
ListItem[] items = new ListItem[allItems.Count];
allItems.CopyTo(items);
ddlst.Items.AddRange(items);
}
/// <summary>
/// 遞歸綁定子節(jié)點(diǎn)
/// </summary>
/// <param name="dt">源DataTable</param>
/// <param name="items">數(shù)組</param>
/// <param name="parentRow">當(dāng)前節(jié)點(diǎn)</param>
/// <param name="curHeader">前綴</param>
/// <param name="text">text字段</param>
/// <param name="value">value字段</param>
/// <param name="parentid">深度字段 例如parentid</param>
private static void CreateLevelListBoxAssistant(DataTable dt, ref ArrayList items, DataRow parentRow, string curHeader, string text, string value, string parentid)
{
ListItem newItem = new ListItem(curHeader + Until.CutString(parentRow[text].ToString(), 18, true), parentRow[value].ToString());
items.Add(newItem);
DataRow[] rows = dt.Select(parentid + "=" + newItem.Value);
for (int i = 0; i < rows.Length - 1; i++)
CreateLevelListBoxAssistant(dt, ref items, rows[i], curHeader.Replace("┣", "┃").Replace("┗", "┣") + "┣", text, value, parentid);
if (rows.Length > 0)
CreateLevelListBoxAssistant(dt, ref items, rows[rows.Length - 1], curHeader.Replace("┣", "┃").Replace("┗", "┣") + "┗", text, value, parentid);
}
#endregion
更多關(guān)于asp.net相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《asp.net操作json技巧總結(jié)》、《asp.net字符串操作技巧匯總》、《asp.net操作XML技巧總結(jié)》、《asp.net文件操作技巧匯總》、《asp.net ajax技巧總結(jié)專(zhuān)題》及《asp.net緩存操作技巧總結(jié)》。
希望本文所述對(duì)大家asp.net程序設(shè)計(jì)有所幫助。
- Jquery.TreeView結(jié)合ASP.Net和數(shù)據(jù)庫(kù)生成菜單導(dǎo)航條
- ASP.NET生成樹(shù)形顯示的GridView實(shí)現(xiàn)思路
- 常用的在數(shù)據(jù)庫(kù)中建立無(wú)限級(jí)樹(shù)形菜單的asp.net代碼
- asp.net 獲取指定文件夾下所有子目錄及文件(樹(shù)形)
- asp.net實(shí)現(xiàn)遞歸方法取出菜單并顯示在DropDownList中(分欄形式)
- ASP.NET遞歸法求階乘解決思路
- 遞歸輸出ASP.NET頁(yè)面所有控件的類(lèi)型和ID的代碼
- asp.net TreeView與XML三步生成列表樹(shù)
- Asp.net treeview實(shí)現(xiàn)無(wú)限級(jí)樹(shù)實(shí)現(xiàn)代碼
- asp.net TreeView遞歸循環(huán)子節(jié)點(diǎn)生成樹(shù)形菜單實(shí)例
相關(guān)文章
ASP.NET對(duì)HTML頁(yè)面元素進(jìn)行權(quán)限控制(一)
界面每個(gè)元素的權(quán)限也是需要控制的。比如一個(gè)查詢(xún)用戶(hù)的界面里面有查詢(xún)用戶(hù)按鈕,添加用戶(hù)按鈕,刪除用戶(hù)按鈕,不同的角色我們得分配不同的權(quán)限2013-12-12
IdentityServer4 QuckStart 授權(quán)與自定義Claims的問(wèn)題
這篇文章主要介紹了IdentityServer4 QuckStart 授權(quán)與自定義Claims的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
ASP.NET Core 2.0中Razor頁(yè)面禁用防偽令牌驗(yàn)證
在這篇短文中,我將向您介紹如何ASP.NET Core2.0 Razor頁(yè)面中禁用防偽令牌驗(yàn)證,對(duì)此有興趣的朋友參考學(xué)習(xí)下吧。2018-01-01
asp.net 驗(yàn)證碼的簡(jiǎn)單制作(vb.net+C#)
asp.net中實(shí)現(xiàn)簡(jiǎn)單驗(yàn)證碼的方法,需要的朋友可以參考下2012-05-05
asp.net代碼中修改web.config節(jié)點(diǎn)的具體方法
在有些情況下,要在代碼中讀取一種全局變量,把這種全局變量放在web.config是一種常見(jiàn)的手段。2013-06-06
Asp.net 圖片文件防盜鏈(尊重勞動(dòng)成果)及BeginRequest事件學(xué)習(xí)
關(guān)于圖片盜鏈這個(gè)問(wèn)題,畢竟是自己的勞動(dòng)成功,很多人不希望別人就那么輕易地偷走了;反盜鏈的程序其實(shí)很簡(jiǎn)單,熟悉ASP.NET 應(yīng)用程序生命周期的話很容易就可以寫(xiě)一個(gè),運(yùn)用HttpModule在BeginRequest事件中攔截請(qǐng)求就ok了2013-01-01
.NET生成動(dòng)態(tài)驗(yàn)證碼的完整步驟
這篇文章主要給大家介紹了關(guān)于.NET生成動(dòng)態(tài)驗(yàn)證碼的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.NET具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

