主要使用遞歸實現,數據庫結構:node
最終樣式:
sql
源碼下載:數據庫
http://files.cnblogs.com/chensubo/RecursionDemo.rar函數
改造過的函數 ui
// <asp:DropDownList ID="editparentid" runat="server" ></asp:DropDownList>this
BindDrpClass(editparentid);}spa
/// <summary>code
二次改造作成一個通用的類 調用 如: new DrpGradingList("select * from dbo.NT_Clcs_ClientType ", "Cc_Name", "Cc_ID", defValue).BindDrpClass(ddl);server
RadTreeView控件 應用:blog
}
其它:
dropDownList.SelectedIndex=dropDownList.Items.IndexOf(dropDownList.Items.FindByText(entityBase.Bugstatus));
MVC樹形:
使用: @Html.DropDownList("ddlXzqy", ViewData["ddlXzqy"] as IEnumerable<SelectListItem>)
/// <summary>
/// 建立樹
/// </summary>
public
void
BindDrpClass(Guid selectId)
{
var
list = repo.GetXzqyRootsList();
List<SelectListItem> selitem =
new
List<SelectListItem>();
foreach
(
var
item
in
list)
{
//頂級分類顯示形式
if
(selectId == item.ID)
{
selitem.Add(
new
SelectListItem { Text =
"╋"
+ item.Name, Value = item.ID.ToString(), Selected =
true
});
this
.ViewData[
"selected"
] = item.ID.ToString();
}
else
{
selitem.Add(
new
SelectListItem { Text =
"╋"
+ item.Name, Value = item.ID.ToString() });
}
//遞歸子分類方法
string
blank =
"├"
;
BindNode(item.ID, blank, selitem, selectId);
}
selitem.Insert(0,
new
SelectListItem { Text =
"==行政區域=="
, Value =
"-1"
});
ViewData[
"ddlXzqy"
] = selitem;
}
private
void
BindNode(Guid parentid,
string
blank, List<SelectListItem> selitem, Guid selectId)
{
var
list = repo.GetXzqyChildList(parentid);
foreach
(
var
item
in
list)
{
if
(selectId == item.ID)
{
selitem.Add(
new
SelectListItem { Text = blank + item.Name, Value = item.ID.ToString(), Selected =
true
});
this
.ViewData[
"selected"
] = item.ID.ToString();
}
else
{
selitem.Add(
new
SelectListItem { Text = blank + item.Name, Value = item.ID.ToString() });
}
string
blank2 = blank +
"─"
;
BindNode(item.ID, blank2, selitem, selectId);
}
}
|