用TreeView显示数据通用方法

treeview|数据|显示

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];

    }
   }
  }
 }

时间: 2024-11-01 16:42:20

用TreeView显示数据通用方法的相关文章

python从sqlite读取并显示数据的方法

  这篇文章主要介绍了python从sqlite读取并显示数据的方法,涉及Python操作SQLite数据库的读取及显示相关技巧,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import cgi, os, sys import sqlite3 as db conn = db.connect('test.db') cursor = conn.cursor() conn.row_factory = db.Row cursor.execute("sele

JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)_javascript技巧

本文实例讲述了JS读取XML文件数据并以table形式显示数据的方法.分享给大家供大家参考,具体如下: 先看xml文件: <?xml version="1.0" standalone="yes"?> <student> <stuinfo> <stuName>张秋丽</stuName> <stuSex>女 </stuSex> <stuAge>18</stuAge>

Android操作SQLite数据库(增、删、改、查、分页等)及ListView显示数据的方法详解_Android

本文实例讲述了Android操作SQLite数据库(增.删.改.查.分页等)及ListView显示数据的方法.分享给大家供大家参考,具体如下: 由于刚接触android开发,故此想把学到的基础知识记录一下,以备查询,故此写的比较啰嗦: 步骤如下: 一.介绍: 此文主要是介绍怎么使用android自带的数据库SQLite,以及把后台的数据用ListView控件显示 二.新建一个android工程--DBSQLiteOperate 工程目录: 三.清单列表AndroidManifest.xml的配置

ASP Recordset 分页显示数据的方法(修正版)_ASP基础

1.建立Recordset对象 复制代码 代码如下: Dim objMyRst Set objMyRst=Server.CreateObject("ADODB.Recordset") objMyRst.CursorLocation=adUseClientBatch '客户端可批量处理 objMyRst.CursorType=adOpenStatic'光标类型为静态类型 注意:Recordset对象不能用Set objMyRst=Connection.Excute strSQL的语句建立

几种显示数据的方法的比较

比较|数据|显示 用于显示数据库数据的时候,一般用循环体来做,常用的方法有while()和for()两种语句,下面就来讲一下他们在不同情况下各自的用法. 我们来分别介绍: while()语句是可以显示全部数据,在不知道循环次数的情况下,尤其显得方便,而for()语句呢,可以输出显示从指定位置开始到指定位置结束的数据,在输出显示一定范围的数据时就用得上了.下面看一下编程实例: 我们先建一个数据库来备用:数据库名为:mydb 表名为:tbl. 用下面的语句:create table tal (idx

TreeView显示数据问题

问题描述 大家好帮一下,就是在TreeView中不显不数据前置后置都发过来了帮看一下谢谢!<%@PageLanguage="VB"AutoEventWireup="false"CodeFile="Default.aspx.vb"Inherits="_Default"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""

几种显示数据的方法的比较_php基础

用于显示数据库数据的时候,一般用循环体来做,常用的方法有while()和for()两种语句,下面就来讲一下他们在不同情况下各自的用法. 我们来分别介绍: while()语句是可以显示全部数据,在不知道循环次数的情况下,尤其显得方便,而for()语句呢,可以输出显示从指定位置开始到指定位置结束的数据,在输出显示一定范围的数据时就用得上了.下面看一下编程实例: 我们先建一个数据库来备用:数据库名为:mydb 表名为:tbl. 用下面的语句:create table tal (idx int(3),u

菜鸟学ADO实例教程之ADO 显示数据

ado|教程|数据|显示 本站原创内容,转载请注明出处网页教学网. 从数据表中读出数据通常是显示在 HTML 的表格中的.下面介绍四种常用的显示数据的方法: 首先给大家介绍一点有关数据库表Customers的内容,数据库表中有如下字段:CustomerID(客户号). CompanyName(公司名) .ContactName(联系人).ContactTitle(联系方式).Address(地址).City(城市). PostalCode(邮编) .Country(国家) 并且我们可以事先随便输

用ASP与SQL Server2000编程分页显示记录的通用方法

server|server2000|sql|编程|分页|显示 用ASP与SQL Server2000编程分页显示记录的通用方法 在工作中,因为需要,需要一个网络查询系统,所以进行了网页设计.以前进行网页编程时经常使用PHP语言和MySQL数据库,此次,因为限制,必须用ASP语言和SQL Server2000,所以对此进行了一些研读.发现,SQL Server和ASP配合没有象MySQL那样的   Select ... limit ... 语句从某条记录开始只取需要的记录的功能,显得比较不方便.