TreeView遞歸綁定無限分類資料
實作一個動态綁定,無限級分類資料時,需要将資料綁定到TreeView控件,分類表的結構是這樣的:
字段 | 類型 |
Id | int |
ParentId | |
Name | Nvarchar(64) |
實作資料綁定:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcukTM2QzMxUDN1UDMwAzNx8CX2ATNxAjMvwlM2QTO4QzLcd2bsJ2Lc12bj5ycn9Gbi52YuAzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
private void ControlsDataBind()
{
tvCategory.Nodes.Clear();
List<Models.Category> types = CommonNews.Helper.OperateContext.Current.LoadNewsTypes();
IEnumerable<Models.Category> rootNodes = types.Where(t => t.ParentId == 0);
TreeNode node = null;
foreach (Models.Category item in rootNodes)
{
node = new TreeNode(item.CategoryName, item.CategoryId.ToString());
if (tvCategory.Nodes.Contains(node))
{
continue;
}
IEnumerable<Models.Category> ts = types.Where(t => t.ParentId == item.CategoryId);
AddNodesToTree(ts, node, 0);
}
}
private void AddNodesToTree(IEnumerable<Models.Category> category, TreeNode node, int level)
{
TreeNode childNode = null;
foreach (Models.Category c in category)
{
childNode = new TreeNode(c.CategoryName, c.CategoryId.ToString());
if (tvCategory.Nodes.Contains(childNode))
{
continue;
}
node.ChildNodes.Add(childNode);
AddNodesToTree(category.Where(t => t.CategoryId == c.ParentId), childNode, level + 1);
}
tvCategory.Nodes.Add(node);
}
TreeViewBind
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。