首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

.net 2.0 无限级树 数据库 存储例子

2011-12-26 
.net 2.0 无限级树 数据库 储存例子今年上班后,好久没有到这边了.今天就把我得工作内容无限级树储取例子和

.net 2.0 无限级树 数据库 储存例子
今年上班后,好久没有到这边了.今天就把我得工作内容无限级树储取例子和大家分享,欢迎各位点评:
代码下载http://www.my0591.net/codes/ControlTree.rar
数据库表设计(sql   server   2000):
字段名数据类型是否主键默认值说明
CIDInt(4)自增预案栏目ID
IIDInt预案ID
CNameVarchar(50)预案栏目名称
UP_IDInt上一级栏目ID
bLowBit是否存在下一级
CSortInt栏目排序
bCurrentBit是否为当前阶段

树操作访问类(TreeController.cs):

namespace   ControlTree
{
        ///   <summary>
        ///   树操作类
        ///   </summary>
        public   class   TreeController
        {
                #region   私有属性

               
                #endregion


                #region   公开接口
                public   TreeController(TreeView   aTreeView,string   ConnStr)
                {
                        m_Tree   =   aTreeView;
                        m_Tree.HideSelection   =   false;
                        m_ConnStr   =   ConnStr;
                        m_DbConnect   =   SqlClientDBConnect.GetConn(m_ConnStr);
                }

                ///   <summary>
                ///   载入树节点
                ///   </summary>
                public   void   Load(int   parentID)
                {
                        generateNodes(parentID,   null);//递归生成树
                }

                ///   <summary>
                ///   保存树节点,重新编排CSort
                ///   </summary>
                public   void   Save()
                {
                        saveNodes(this.m_Tree.Nodes);
                }

                ///   <summary>
                ///   添加一个节点
                ///   </summary>
                ///   <param   name= "parentNode "> </param>
                ///   <param   name= "newNodeEntity "> </param>
                public   TreeNode   AddANode(TreeNode   parentNode,NodeEntity   newNodeEntity,bool   isInsert)


                {
                        if   (isInsert)
                        {
                                AddANodeEntity(newNodeEntity);
                        }
                        TreeNode   newNode   =   new   TreeNode(newNodeEntity.CName);
                        newNode.Tag   =   newNodeEntity;
                        if   (parentNode   !=   null)
                        {
                                parentNode.Nodes.Add(newNode);
                        }
                        else//空的时候添加在控件最外层
                        {
                                this.m_Tree.Nodes.Add(newNode);
                        }
                        return   newNode;
                }

                ///   <summary>
                ///   修改一个节点
                ///   </summary>
                ///   <param   name= "theNode "> </param>
                ///   <param   name= "newNodeEntity "> </param>
                public   bool   EditANode(TreeNode   theNode,   NodeEntity   newNodeEntity)
                {
                        theNode.Text   =   newNodeEntity.CName;
                        theNode.Tag   =   newNodeEntity;

                        return   UpdateANodeEntity(newNodeEntity);
                }

                ///   <summary>
                ///   删除一个节点
                ///   </summary>
                ///   <param   name= "theNode "> </param>
                public   bool   DelANode(TreeNode   theNode)
                {


                        if   (theNode.Nodes.Count   >   0)
                        {
                                return   false;
                        }
                        NodeEntity   aNodeEntity   =   GetNodeEntity(theNode);
                        if   (aNodeEntity   !=   null)
                        {
                                theNode.Parent.Nodes.Remove(theNode);
                                return   DelANodeEntity(aNodeEntity);
                        }
                        else
                        {
                                return   false;
                        }

                }

                ///   <summary>
                ///     获取与theNode关联得NodeEntity
                ///   </summary>
                ///   <param   name= "theNode "> </param>
                ///   <returns> </returns>
                public   NodeEntity   GetNodeEntity(TreeNode   theNode)
                {
                        return   (theNode.Tag   as   NodeEntity);
                }

                public   NodeEntity   GetANewNodeEntity()
                {
                        NodeEntity   aNodeEntity   =   new   NodeEntity();
                        aNodeEntity.CID   =   0;
                        aNodeEntity.IID   =   1;

                        aNodeEntity.CName   =   "新栏目 ";
                        aNodeEntity.UP_ID   =   0;

                        aNodeEntity.bLow   =   false;


                        aNodeEntity.CSort   =   0;

                        aNodeEntity.bCurrent   =   false;

                        return   aNodeEntity;
                }    

                #endregion

                #region   私有操作

            }




[解决办法]
sofa :)


[解决办法]
学习 mark先
[解决办法]
太长
[解决办法]
应该要费点脑筋!学习!
[解决办法]
2005 么?
好象不多代码哦。。。
[解决办法]
lz好人,谢谢
[解决办法]
支持共享
[解决办法]
看了晕,等不晕了在来继续看
[解决办法]
看了晕,等不晕了在来继续看


[解决办法]
最关紧的
generateNodes
递归生成树没在上面写出来
[解决办法]
顶下 学习了


[解决办法]
是不是主要是一个递归算法?
[解决办法]
如果我想在你现有的基础上在增加一个文件进去

1
1.1
1.2
1.2.1
1.2.2
2
2.1

你该如何实现

[解决办法]
mark 学习
[解决办法]
^_^
[解决办法]
看了晕,等不晕了在来继续看

[解决办法]
好几个月就搞这个啊。昏,先替你自我批评下!

热点排行