封装一个TreeView(原创)

// 封装一个TreeView封装一个TreeView
// 本封装TreeView 适合 01 0101 010101无限递归
// 引用控件时 this.TreeView1.DataSet=(DataSet),该DataSet必须包含 Code,Name,Url字段

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Data;
using  System.Web.UI.WebControls;

// 程序设计:陈文利 
// QQ:36055915 MSN:sinofishing@hotmail.com

namespace  EastSoft.Web.Control
{
       
public class ETreeView:System.Web.UI.WebControls.TreeView
       
{
           
public ETreeView()
           
{
           
           }
       
           
protected override void OnSelectedNodeChanged(EventArgs e)
           
{
               
string s = "";
               s 
= this.SelectedNode.Text.Remove(0this.SelectedNode.Text.IndexOf("]"0+ 1);
               m_SelectText 
= s;
               
base.OnSelectedNodeChanged(e);
           }

           
private string m_SelectText="";
           
public string SelectText get return m_SelectText; } set { m_SelectText = value; } }
      
           
private DataSet ds;
           
public DataSet DataSet get {return ds;}set {     ds = value;     RootNode((TreeNode)null); } }
           
private int len = 2;
           
public void RootNode(TreeNode pNode)
           
{
               
this.Nodes.Clear();
               
if (ds == null)
                   
return;
               DataView dvTree 
= new DataView(ds.Tables[0]);
               dvTree.RowFilter 
= "len(Code)=" + len.ToString();
               
foreach (DataRowView Row in dvTree)
               
{
                   TreeNode Node 
= new TreeNode();
                   Node.Value 
= Row["Code"].ToString();
                   Node.Text 
="[" + Row["Code"].ToString() + "]"+     Row["Name"].ToString();
                   Node.NavigateUrl 
= Row["Url"].ToString();
                   
this.Nodes.Add(Node);
                   AddNode(Node, len);
               }
           

           }

           
public void AddNode(TreeNode pNode, int len)
           
{           
               len 
= len + 2;
               DataView dvTree 
= new DataView(ds.Tables[0]);
               dvTree.RowFilter 
= "len(Code)=" + len.ToString() + "and Code like '" + pNode.Value + "%'";
               
foreach (DataRowView Row in dvTree)
               
{
                   TreeNode Node 
= new TreeNode();
                   Node.Value 
= Row["Code"].ToString();
                   Node.Text 
= "[" + Row["Code"].ToString() + "]" + Row["Name"].ToString();
                   Node.NavigateUrl 
= Row["Url"].ToString();
                   pNode.ChildNodes.Add(Node);
                   AddNode(Node, len);
               }

           }

           
private DataSet m_CheckedNodeDataSet = new DataSet();
           
public DataSet CheckedNodeDataSet
           
{
               
get
               
{
                   
return m_CheckedNodeDataSet;
               }

               
set
               
{
                   m_CheckedNodeDataSet 
= value;
                   CheckedBoot();
               }

            
           }

           
private void CheckedBoot()
           
{
               
foreach (DataRow dr in m_CheckedNodeDataSet.Tables[0].Rows)
               
{

                   
foreach (TreeNode chileTNT in this.Nodes)
                   
{
                       
if (chileTNT.Value == dr[0].ToString())
                       
{
                           chileTNT.Checked 
= true;

                       }

                       SelectChileNotes(chileTNT.ChildNodes, dr[
0].ToString());
                   }

               }

           }

           
private void SelectChileNotes(TreeNodeCollection TNC, string select)
           
{
               
if (TNC.Count == 0return;
               
foreach (TreeNode chileTNT in TNC)
               
{
                   
if (chileTNT.Value == select)
                   
{
                       chileTNT.Checked 
= true;
                       
return;
                   }

                   SelectChileNotes(chileTNT.ChildNodes, select);
               }

           }

       }

}


 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值