天天看點

TreeView遞歸綁定無限分類資料

TreeView遞歸綁定無限分類資料

實作一個動态綁定,無限級分類資料時,需要将資料綁定到TreeView控件,分類表的結構是這樣的:

字段 類型
Id int
ParentId
Name Nvarchar(64)

實作資料綁定:

TreeView遞歸綁定無限分類資料
TreeView遞歸綁定無限分類資料
TreeView遞歸綁定無限分類資料
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

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。