主要使用递归实现,数据库结构: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);
}
}
|