TreeView递归绑定无限分类数据

实现一个动态绑定,无限级分类数据时,需要将数据绑定到TreeView控件,分类表的结构是这样的:


字段


类型


Id


int


ParentId


int


Name


Nvarchar(64)

实现数据绑定:

        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

时间: 2024-10-19 22:33:22

TreeView递归绑定无限分类数据的相关文章

不用递归实现无限分类数据的树形格式化

<?php /** * 此方法由@Tonton 提供 * http://my.oschina.net/u/918697 * @date 2012-12-12 */ function genTree5($items) { foreach ($items as $item) $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']]; return isset($items[0]['son']) ? $items[0]['son

php不用递归完成无限分类,从表设计入手完整演示过程

无限分类是什么就不废话了,可以用递归实现,但是递归从数据库取东西用递归效率偏低,如果从表设计入手,就很容易做到网站导航的实现,下面是某论坛导航,如下图 网上无限分类大多不全面,今天我会从设计表开始, 首先我们先做视图界面, <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>白超华-博客园</title> &

php递归获取无限分类菜单

从数据库获取所有菜单信息,需要根据id,pid字段获取主菜单及其子菜单,以及子菜单下的子菜单,可以通过函数递归来实现. <?php class Menu { public $menu = array(); public function __construct() { $this->menu = array( array('id'=>1, 'title'=>"首页",'pid'=>0), array('id'=>158,'title'=>&qu

treeview递归绑定的两种方法

方法一: 复制代码代码如下: public void creattree(int fid, TreeNode parentnode)           { DataTable dt = new DataTable();               dt = op.BindGroup();               DataRow[] drs = dt.Select("parentid=" + fid);               foreach (DataRow row in d

无限分类数据树形格式化

<?php /** * 此方法由@Tonton 提供 * http://my.oschina.net/u/918697 * @date 2012-12-12  */function genTree5($items) {     foreach ($items as $item)         $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];     return isset($items[0]['son']) 

php处理无限极分类数据的两种方式

开发过程中,经常会遇到处理无限分类数据,这里就介绍一下处理无限分类数据的两种方式,有不对的地方,还望多多指正. //测试数据 $array=array( ['id'=>1,'parent_id'=>0,'name'=>1], ['id'=>2,'parent_id'=>0,'name'=>2], ['id'=>3,'parent_id'=>1,'name'=>3], ['id'=>4,'parent_id'=>1,'name'=>4]

数据表的无限分类

一.什么是无限分类? 无限级别的向下分类 二.无限分类数据表的设计 id name pid path  (级别) 1 国际新闻   0 0  (顶级分类) 2 国内新闻   0 0  (顶级分类) 3 国际娱乐新闻   1 0-3  (上级分类级别-本分类主键ID) 4 国际体育新闻   1 0-4 5 国内娱乐新闻   2 0-5 6 国内体育新闻   2 0-6 7 足球新闻   4 0-4-7 8 篮球新闻   6 0-6-8 原文地址:https://www.cnblogs.com/zh

深度实现session【包括session入库、session机制和session和cookie的使用方法,完善会话机制(在分布式机器中也能使用)】、无限分类的实现

1.session的注意点:@session_start();//这个配置需要注意,session开启中会有影响,所以使用错误抑制符进行限制[并且使用php.ini对session进行自动开启] session_start()前的输出问题:[session信息本身会增加到http头信息,也就是http主体不能在头前]对php.ini中的输出缓存进行配置,out_buffer的配置[注意:开启之后能够保证输出内容在脚本中缓存] [注意](1)脚本中session变量的键只能是字符串类型的[$_SE

无限分类树操作

获取相应分类id的分类树: public static function getCategoryTree($id){ //$model=M('category'); if($id>0){ $obj=self::selectTable('category',array('id'=>$id),true);//$model->where(array('id'=>$id))->find(); if(!is_null($obj)){ $childList=self::selectTab