asp.net 的TreeView递归加载

 UnitData 为类型化数据集,字段包括UnitCode,UnitName

其中UnitCode的规则为每两位递增。

00

    0001

         000101

    0002

        000201

        000202

01

依此类推。

tvnUnit为TreeView控件

protected   void  Page_Load( object  sender, EventArgs e)
        
{
            
if (!Page.IsPostBack)
            
{

                UnitData uData 
= uRules.GetUnitData(string.Empty);

                LoadNodes(uData, 
null1);

                tvUnit.CollapseAll();

            }


        }



        
private   void  LoadNodes(UnitData uData, TreeNodeCollection parentNodes,  int  times)
        
{

            TreeNode nodeStart;

            
if (parentNodes == null)
            
{
                nodeStart 
= new TreeNode("从这里开始"string.Empty);

                tvUnit.Nodes.Add(nodeStart);

                parentNodes 
= new TreeNodeCollection();

                parentNodes.Add(nodeStart);

                tvUnit.Nodes.Add(nodeStart);

                LoadNodes(uData, parentNodes, times);

            }

            
else
            
{
                
bool hasChildren = false;
                TreeNodeCollection tmpNodes 
= new TreeNodeCollection();
                
foreach (TreeNode node in parentNodes)
                
{

                    UnitData.UnitRow[] rows;

                    rows 
= (UnitData.UnitRow[])uData.Unit.Select("LEN(unitcode)=" + unitCodeIndent * times + " AND unitcode LIKE '" + node.Value + "%'""unitcode");

                    
string valuePath = GetValuePath(node);

                    
foreach (UnitData.UnitRow row in rows)
                    
{
                        hasChildren 
= true;
                        tvUnit.FindNode(valuePath).ChildNodes.Add(
new TreeNode(row.UnitName, row.UnitCode));
                        tmpNodes.Add(
new TreeNode(row.UnitName, row.UnitCode));
                    }


                }

                parentNodes 
= tmpNodes;
                
if (hasChildren)
                
{

                    LoadNodes(uData, parentNodes, 
++times);

                }


            }


        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值