根据数据库中的数据构造treeview

数据库的数据结构是这样的:
sCompany_no varchar(10) Unchecked
sCompany_name varchar(50) Unchecked
sShortname varchar(30) Checked
sParent_no varchar(10) Checked
sTree varchar(30) Checked
iTreeLevel int Checked
具体数据如下:
000001总公司简称NULL0011
000002公司2简称0000010010012
000003公司3简称0000010010022
000004公司4简称0000010010032
000005公司4简称0000010010042
000006公司4下属简称0000050010040013
000007公司4下属2简称0000050010040023

构造treeview的c#代码如下:(用递归方法实现)
ContractedBlock.gif ExpandedBlockStart.gif      初始化部门树 #region 初始化部门树
InBlock.gif    
//--------------------------------------------------------------------------------------------------------
ExpandedSubBlockStart.gifContractedSubBlock.gif
    /**//// <summary>
InBlock.gif    
/// ORM实现对部门树的初始化
InBlock.gif    
/// </summary>
ExpandedSubBlockEnd.gif    
/// <param name="toTreeview">指定一个目标treeview</param>

InBlock.gif    public static void CompanyTree_Init(TreeView toTreeView)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        toTreeView.Nodes.Clear();
InBlock.gif        
int iLevel = 1;// tmpCorp.iTreeLevel;
InBlock.gif
        ORtCompany corp = new ORtCompany();
InBlock.gif        ORDataReader
<ORtCompany> reader = corp.DataAccessor.ExecuteReader(CommandType.Text, "select * from tCompany where sStatus = '1'", corp, null);
InBlock.gif       
InBlock.gif        TreeNode tmpNode 
= new TreeNode();
InBlock.gif        
foreach (ORtCompany u in reader)//循环每行数据
ExpandedSubBlockStart.gifContractedSubBlock.gif
        dot.gif{
InBlock.gif            
if ((int)u.iTreeLevel == iLevel)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                TreeNode rootNode 
= new TreeNode();
InBlock.gif                rootNode.Text 
= u.sCompany_no.ToString().Trim() + u.sShortname.ToString().Trim();
InBlock.gif                rootNode.Value 
= u.sCompany_no.ToString().Trim();
InBlock.gif                rootNode.ToolTip 
= u.sCompany_name;
InBlock.gif                toTreeView.Nodes.Add(rootNode);
InBlock.gif                rootNode.Expanded 
= true;
ExpandedSubBlockEnd.gif            }

InBlock.gif            
else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                tmpNode 
= null;
InBlock.gif                
for (int i = 0; i < toTreeView.Nodes.Count; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    TreeNode ttNode 
= new TreeNode();
InBlock.gif                    ttNode 
= FindNode(toTreeView.Nodes[i], u.sParent_no.ToString().Trim());
InBlock.gif                    
if (ttNode != null) tmpNode = ttNode;
ExpandedSubBlockEnd.gif                }

InBlock.gif                
if (tmpNode != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    TreeNode subNode 
= new TreeNode();
InBlock.gif                    subNode.Text 
= u.sCompany_no.ToString().Trim() + u.sShortname.ToString().Trim();
InBlock.gif                    subNode.Value 
= u.sCompany_no.ToString().Trim();
InBlock.gif                    subNode.ToolTip 
= u.sCompany_name;
InBlock.gif                    tmpNode.ChildNodes.Add(subNode);
InBlock.gif                    subNode.Expanded 
= true;
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

InBlock.gif        reader.Close();
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 递归查找父节点
InBlock.gif    
/// </summary>
InBlock.gif    
/// <param name="tnParent">指定一个根节点,然后遍历它</param>
ExpandedSubBlockEnd.gif    
/// <param name="strValue">所要查找的节点的value</param>

InBlock.gif    public static TreeNode FindNode(TreeNode tnParent, string strValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if (tnParent == nullreturn null;
InBlock.gif        
if (tnParent.Value == strValue) return tnParent;
InBlock.gif        TreeNode tnRet 
= null;
InBlock.gif        
foreach (TreeNode tn in tnParent.ChildNodes)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            tnRet 
= FindNode(tn, strValue);
InBlock.gif            
if (tnRet != nullbreak;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
return tnRet;
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif    
#endregion

其中用到了 ORM获取数据,不用它当然也可以。

转载于:https://www.cnblogs.com/vagerent/archive/2007/03/22/683432.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值