封装一个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(0, this.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 == 0) return;
foreach (TreeNode chileTNT in TNC)
{
if (chileTNT.Value == select)
{
chileTNT.Checked = true;
return;
}
SelectChileNotes(chileTNT.ChildNodes, select);
}
}
}
}


浙公网安备 33010602011771号