读书人

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

发布时间: 2011-12-26 23:09:59 作者: rapoo

.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 学习
[解决办法]
^_^
[解决办法]
看了晕,等不晕了在来继续看

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

读书人网 >C#

热点推荐