新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > .Net开发 > Asp.net教程 > 正文:用TreeView显示数据通用方法

用TreeView显示数据通用方法

新客网 XKER.COM 2005-05-11 来源: 收藏本文

public void TreeViewData(DataSet ds,string    textColumnName,string parentColumnName,string tagColumnName)

{

 myTreeData root = new myTreeData();
    myTreeData child = null;
    for (i = 0 ; i < ds.Tables[0].Rows.Count; ++i)
    {
     child = new myTreeData(ds.Tables[0].Rows[i][textColumnName].ToString(),ds.Tables[0].Rows[i][tagColumnName],ds.Tables[0].Rows[i][parentColumnName]);
     root.Add(child);
    }

    root.ShowTree(tv);
}



 /// <summary>
 /// 树型节点数据类
 /// </summary>
 public class myTreeData
 {
  public myTreeData()
  {
  }


  public myTreeData(string name)
  {
   Name = name;
  }


  public myTreeData(string name,object tag,object parent)
  {
   Name = name;
   Tag = tag;
   Parent = parent;
  }


  /// <summary>
  /// 子数据集合
  /// </summary>
  private myTreeDataCollection Child = new myTreeDataCollection();


  /// <summary>
  /// 数据对象
  /// </summary>
  public object Tag = null;

  /// <summary>
  /// 名称
  /// </summary>
  public string Name = "";

  /// <summary>
  /// 父亲
  /// </summary>
  public object Parent = null;


  /// <summary>
  /// 添加子数据
  /// </summary>
  /// <param name="child">子数据</param>
  public void Add(myTreeData child)
  {
   int i;
   for (i =  this.Child.Count - 1; i >= 0;--i)
   {
    if (Convert.ToInt32(this.Child[i].Parent) == Convert.ToInt32(child.Tag) )
    {
     child.Child.Add(this.Child[i]);
     this.Child.RemoveAt(i);
    }
   }
   myTreeData parent = FindParent(this,child);
   if (parent == null)
   {
    this.Child.Add(child);
   }
   else
   {
    parent.Child.Add(child);
   }
  }


  /// <summary>
  /// 查找父亲数据
  /// </summary>
  /// <param name="child">子数据</param>
  /// <returns>父亲数据或者null</returns>
  public myTreeData FindParent(myTreeData parent,myTreeData child)
  {
   int i;
   for (i = 0; i < parent.Child.Count; ++i)
   {
    if (Convert.ToInt32(parent.Child[i].Tag) == Convert.ToInt32(child.Parent))
    {
     return parent.Child[i];
    }
    myTreeData temp = FindParent(parent.Child[i],child);
    if (temp != null)
    {
     return temp;
    }
   }
   return null;
  }


  /// <summary>
  /// 将子数据显示到TreeView
  /// </summary>
  /// <param name="tv">TreeView</param>
  public void ShowTree(TreeView tv)
  {
   int i;
   TreeNode tn = null;
   for (i = 0 ; i < this.Child.Count; ++i)
   {
    tn = tv.Nodes.Add(this.Child[i].Name);
    tn.Tag = this.Child[i].Tag;
    ShowTree(tn,this.Child[i]);
   }
  }


  /// <summary>
  /// 递归显示数据
  /// </summary>
  /// <param name="tn">节点</param>
  /// <param name="child">数据</param>
  private void ShowTree(TreeNode tnParent,myTreeData child)
  {
   int i;
   TreeNode tn = null;
   for (i = 0 ; i < child.Child.Count; ++i)
   {
    tn = tnParent.Nodes.Add(child.Child[i].Name);
    tn.Tag = child.Child[i].Tag;
    ShowTree(tn,child.Child[i]);
   }
  }
   

  /// <summary>
  /// 树型节点集合类
  /// </summary>
  internal class myTreeDataCollection : AddCollectionBase
  {
   public myTreeDataCollection()
   {
   }
    
   public myTreeData this[int index]
   {
    get
    {
     return (myTreeData)List[index];

    }
   }
  }
 }


收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐