实现使用TreeView无级分类(一)绑定

网上资料整理
新闻类别表:NewsClass  顶级类别固定为新闻
字段:ClassId int 4  编号 自增
            ClassName nvarchar 50 类别名称:
            PrentId    int 4 父类id
           LastNode  int 4 标识是否有子类

首先做显示:
根据父类id 返回所有类别
存储过程为

1 None.gif CREATE   PROCEDURE  NewsClass_Tree_ID
2 None.gif @parentID   int
3 None.gif AS
4 None.gif select   *   from  NewsClass  where  parentId  =   @parentID
5 None.gif GO
6 None.gif

由于采用三层架构,这里提供DAL层代码
using System.Collections;
ArrayList可按照大小动态增加

 1 None.gif   public  ArrayList GetNewsListData( int  parentID)
 2 None.gif
 3 ExpandedBlockStart.gifContractedBlock.gif         dot.gif {
 4InBlock.gif            ArrayList list = new ArrayList();
 5ExpandedSubBlockStart.gifContractedSubBlock.gif            SqlParameter[] sqlParmeter = dot.gif{
 6InBlock.gif                new SqlParameter("@parentID",SqlDbType.Int,4)
 7ExpandedSubBlockEnd.gif            }
;
 8InBlock.gif            sqlParmeter[0].Value = parentID;
 9InBlock.gif            SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction,CommandType.StoredProcedure,"NewsClass_Tree_ID",sqlParmeter);
10InBlock.gif            while(reader.Read())
11ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
12InBlock.gif                NewsClassData newsClassData = new NewsClassData();
13InBlock.gif                newsClassData.ClassId = Convert.ToInt32(reader["ClassId"].ToString());
14InBlock.gif                newsClassData.ClassName = reader["ClassName"].ToString();
15InBlock.gif                newsClassData.ParentId = Convert.ToInt32(reader["ParentId"].ToString());
16InBlock.gif                newsClassData.NumId = Convert.ToInt32(reader["NumId"].ToString());
17InBlock.gif                newsClassData.LastNode = Convert.ToInt32(reader["LastNode"].ToString());
18InBlock.gif                list.Add(newsClassData);
19ExpandedSubBlockEnd.gif            }

20InBlock.gif            reader.Dispose();
21InBlock.gif            return list;
22ExpandedBlockEnd.gif        }

BLL层写个方法调用DAL层

1 None.gif   // 根据parentID返回所有类别
2 None.gif         public  ArrayList GetNewsClassListData( int  parentID)
3 ExpandedBlockStart.gifContractedBlock.gif        dot.gif {
4InBlock.gif           return (new NewsClassAccessor()).GetNewsListData(parentID);
5ExpandedBlockEnd.gif       }

UI层 实现绑定 关键的

 1 None.gif   protected   void  BindTree(TreeNodeCollection TreeCol, int  superID)
 2 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 3InBlock.gif        ArrayList arryList = new ArrayList();//创建一个动态的数组
 4InBlock.gif        NewsClassSystem newsClassSystem = new NewsClassSystem(); 实例化
 5InBlock.gif        arryList = newsClassSystem.GetNewsClassListData(superID); 返回所有类别赋值给数组这里面包含所有类别,可对他实现查询
 6InBlock.gif        TreeNode node;//实例化节点对象
 7InBlock.gif        //这里我也不太明白
 8InBlock.gif        foreach(NewsClassData newsClassData in arryList)
 9ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
10InBlock.gif            node = new TreeNode();
11InBlock.gif            node.Text = newsClassData.ClassName + "("+ newsClassData.NumId +")";
12InBlock.gif            node.Value = newsClassData.ClassId.ToString();
13InBlock.gif            TreeCol.Add(node);
14InBlock.gif            BindTree(node.ChildNodes,Convert.ToInt32(node.Value));
15ExpandedSubBlockEnd.gif        }

16InBlock.gif
17ExpandedBlockEnd.gif    }

在page_load里

if(!Page.IsPostBack)
        {
            this.treeClass.Nodes.Clear();
            BindTree(this.treeClass.Nodes,0);//0代表顶级类别 this.treeClass.Nodes表示所有节点的集合
        }

转载于:https://www.cnblogs.com/mygood/articles/TreeViewBind.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值