一种加载TreeView数据的新写法

今天在MSDN看到一篇文章,受到启发,便用下面的方式实现TreeView的数据加载。因为使用了spring来注入业务方法,所以不完全贴上代码了,只贴上关键部分。
         ///   <summary>
        
///  执行数据显示
        
///   </summary>
         public   void  showTree()
        {
            image1 
=  Resources.home.ToBitmap();
            image2 
=  Resources.department.ToBitmap();
            image3 
=  Resources.users.ToBitmap();

            imageList.Images.Add(image1);
            imageList.Images.Add(image2);
            imageList.Images.Add(image3);

            
if  (treeDataSupportImpl  ==   null )
            {
                treeDataSupportImpl 
=  (ITreeDataSupport)AppUtils.getObject( " treeDataSupportImpl " );
            }

            
//  获取数据
            IList treeDataList =  treeDataSupportImpl.GetTreeData( false false );
            IList empOrPosList 
=   new  List < IDictionary > ();
            
if  (isLoadEmployee  ||  isLoadPosition)
            {
                empOrPosList 
=  treeDataSupportImpl.GetTreeData(isLoadEmployee, isLoadPosition);
            }
            log.Debug(treeDataList.Count);
            
if  (treeDataList.Count  >   0   &&  treeDataList  !=   null )
            {
                
//  转换为DataTable
                 this .converListToDataTable(treeDataList);

                
//  调用数据展现方法
                log.Debug( " 开始创建、、、 " );
                
this .createTree( 0 ,(TreeNode) null );

                
//  如果有数,则加载
                 if  (empOrPosList.Count  >   0   &&  empOrPosList  !=   null )
                {
                    
this .addTree(empOrPosList);
                }

            }
        }

        
///   <summary>
        
///  添加员工或职称到树
        
///   </summary>
        
///   <param name="list"></param>
         public   void  addTree(IList list)
        {
            
foreach  (IDictionary empOrPos  in  list)
            {
                TreeNode newNode 
=   new  TreeNode();
                newNode.Name 
=  empOrPos[ " ORG_ID " ].ToString();
                newNode.Text 
=  empOrPos[ " ORG_NAME " ].ToString();
                newNode.ImageIndex 
=   2 ;
                newNode.SelectedImageIndex 
=   2 ;
                TreeNode node 
=  myTreeView.Nodes.Find(empOrPos[ " SUPER_ORG_ID " ].ToString(),  true )[ 0 ];
                node.Nodes.Add(newNode);
            }
        }

        
///   <summary>
        
///  创建树
        
///   </summary>
        
///   <param name="ParentID"></param>
        
///   <param name="pNode"></param>
         public   void  createTree( int  ParentID,TreeNode pNode)
        {
            DataView dvTree 
=   new  DataView(treeData);
            dvTree.RowFilter 
=   " [SUPER_ORG_ID] =  "   +  ParentID;

            
foreach  (DataRowView Row  in  dvTree)
            {
                
if (pNode  ==   null )
                {
                    log.Debug(
" 根节点: "   +  Row[ " ORG_NAME " ].ToString());
                    
//  添加根节点
                    myTreeView.ImageList  =  imageList;
                    TreeNode node 
=  myTreeView.Nodes.Add(Row[ " ORG_NAME " ].ToString());
                    node.Name 
=  Row[ " ORG_ID " ].ToString();
                    node.ImageIndex 
=   0 ;
                    node.SelectedImageIndex 
=   0 ;
                    
//  递归
                    createTree(Int32.Parse(Row[ " ORG_ID " ].ToString()),node);    
                }
                
else
                {
                    log.Debug(
" 节点: "   +  Row[ " ORG_NAME " ].ToString());
                    
//  添加当前节点
                    TreeNode node  =   pNode.Nodes.Add(Row[ " ORG_NAME " ].ToString());
                    node.Name 
=  Row[ " ORG_ID " ].ToString();
                    
if (Row[ " ORG_TYPE_ID " ].ToString().Equals( " 2 " ||  Row[ " ORG_TYPE_ID " ].ToString().Equals( " 3 " ))
                    {
                        node.ImageIndex 
=   1 ;
                        node.SelectedImageIndex 
=   1 ;
                    }
                    
else
                    {
                        node.ImageIndex 
=   2 ;
                        node.SelectedImageIndex 
=   2 ;
                    }

                    
// 再次递归
                    createTree(Int32.Parse(Row[ " ORG_ID " ].ToString()),node);
                }
            }

        }

        
///   <summary>
        
///  转换函数
        
///   </summary>
        
///   <param name="list"></param>
         public   void  converListToDataTable(IList list)
        {
            DataColumn dataColumn 
=  treeData.Columns.Add( " ORG_ID " typeof (Int32));
            dataColumn.AllowDBNull 
=   false ;
            treeData.Columns.Add(
" ORG_NAME " typeof (String));
            treeData.Columns.Add(
" SUPER_ORG_ID " typeof (Int32));
            treeData.Columns.Add(
" ORG_TYPE_ID " typeof (Int32));

            
foreach  (IDictionary dict  in  list)
            {
                DataRow row 
=  treeData.NewRow();
                row[
" ORG_ID " =  dict[ " ORG_ID " ];
                row[
" ORG_NAME " =  dict[ " ORG_NAME " ];
                row[
" SUPER_ORG_ID " =  dict[ " SUPER_ORG_ID " ];
                row[
" ORG_TYPE_ID " =  dict[ " ORG_TYPE_ID " ];
                treeData.Rows.Add(row);
            }
            
/*
            foreach (DataRow row in treeData.Rows)
            {
                log.Debug(row["ORG_ID"].ToString() + " | " + row["ORG_NAME"].ToString() + " | " + row["SUPER_ORG_ID"].ToString() + " | " + row["ORG_TYPE_ID"].ToString());
            }
             * 
*/
        }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值