📄 tree.cs
字号:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms ;
namespace ExamCenter.BLCTier
{
public class NodeInfo
{
public string NodeID;
public NodeInfo()
{
}
}
public class Tree
{
public static void GenerateTree(DataTable dt,string id,string parentid,string name,ref TreeView tv)
{
Hashtable ht = new Hashtable();
Hashtable htParent = new Hashtable();
int iCount = dt.Rows.Count;
DataRow dr;
NodeInfo nodeInfo;
string [] keyArray = new string[iCount];//保存哈西表中的键值
//创建所有树节点,保存在哈西表中
for(int i=0;i<iCount;i++)
{ //-----------------处理记录编号域------------------------
nodeInfo = new NodeInfo();
dr = dt.Rows[i];
nodeInfo.NodeID = dr[id].ToString();
keyArray[i] = nodeInfo.NodeID;
TreeNode tn = new TreeNode (); //创建节点
tn.Tag= dr[id].ToString();
tn.Text= dr[name].ToString();
ht.Add(nodeInfo.NodeID,tn);
//----------处理记录父编号域-----------------------
TreeNode tnParent=new TreeNode ();
tnParent.Tag = dr[parentid].ToString();
htParent.Add (nodeInfo.NodeID,tnParent);
//-----------------------------------------------
}
//建立节点关系,并将根节点加入到TreeView中
for(int i=0;i<iCount;i++)
{
TreeNode tn = (TreeNode)ht[keyArray[i]];
TreeNode tnParent=(TreeNode)htParent[keyArray[i]];
if(tnParent.Tag == null || (string)tnParent.Tag == "0")
tv.Nodes.Add(tn);
//这是根节点
else //这是子节点
{
TreeNode tnCurrentParent = (TreeNode)ht[tnParent.Tag];
//找父节点对象,注意:可能找不到父节点对象
if(tnCurrentParent!=null)
tnCurrentParent.Nodes.Add(tn);
//找到父节点:把该节点加到父节点的子节点列表中
else
{
//未找到父节点:或把它设为根节点,或抛弃
//设为根节点
tv.Nodes.Add(tn);
}
}
}
}
//-------------------------------------
public static void GenerateTypeTree(DataTable dt,string id,string parentid,string name,ref TreeView tv,string strTypeName)
{
Hashtable ht = new Hashtable();
Hashtable htParent = new Hashtable();
int iCount = dt.Rows.Count;
DataRow dr;
NodeInfo nodeInfo;
string [] keyArray = new string[iCount];//保存哈西表中的键值
//创建所有树节点,保存在哈西表中
for(int i=0;i<iCount;i++)
{ //-----------------处理记录编号域------------------------
nodeInfo = new NodeInfo();
dr = dt.Rows[i];
nodeInfo.NodeID = dr[id].ToString();
keyArray[i] = nodeInfo.NodeID;
TreeNode tn = new TreeNode (); //创建节点
tn.Tag= dr[id].ToString();
tn.Text= dr[name].ToString();
ht.Add(nodeInfo.NodeID,tn);
//----------处理记录父编号域-----------------------
TreeNode tnParent=new TreeNode ();
tnParent.Tag = dr[parentid].ToString();
htParent.Add (nodeInfo.NodeID,tnParent);
//-----------------------------------------------
}
//建立节点关系,并将根节点加入到TreeView中
for(int i=0;i<iCount;i++)
{
TreeNode tn = (TreeNode)ht[keyArray[i]];
TreeNode tnParent=(TreeNode)htParent[keyArray[i]];
if(tnParent.Tag == null || (string)tnParent.Tag == "0" && tn.Text .Trim ()==strTypeName.Trim ())
tv.Nodes.Add(tn);
//这是根节点
else //这是子节点
{
TreeNode tnCurrentParent = (TreeNode)ht[tnParent.Tag];
//找父节点对象,注意:可能找不到父节点对象
if(tnCurrentParent!=null)
tnCurrentParent.Nodes.Add(tn);
//找到父节点:把该节点加到父节点的子节点列表中
else
{
//未找到父节点:或把它设为根节点,或抛弃
//设为根节点
// tv.Nodes.Add(tn);
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -