WINFORM树结构的绘制和数据表结构的绘制。
2008-11-29 10:44
211 查看
WINFORM两个树结构的绘制。
支持路径方式和数据表结构方式。
如果是在WEBFROM下修改响应的控件名。
调用
List<string> Test =new List<string>();
Test.Add(@"C:/");
Test.Add(@"C:/Temp");
Test.Add(@"C:/Temp/A");
GetTree(TreeView1, Test , '//');
#region 数据树结构
/// <summary>
/// 绘制树
/// </summary>
/// <param name="Tv">树控件</param>
/// <param name="Ds">数据DATASET</param>
/// <param name="Tagindex">主键INDEX</param>
/// <param name="Textindex">文本的INDEX</param>
/// <param name="Parentindex">父目录的INDEX</param>
/// <param name="ParentStar">父的条件</param>
public static void GetTree(TreeView MyTreeView,DataTable MyDataTable,int Tagindex,int Textindex,int Parentindex,string ParentStar)
{
string ParentText = MyDataTable.Columns[Parentindex].ColumnName;
DataRow[] T = MyDataTable.Select(ParentText +"='" + ParentStar+"'");
for (int i = 0; i != T.Length; i++)
{
TreeNode Tn = new TreeNode();
Tn.Text = T[i][Textindex].ToString();
Tn.Tag = T[i][Tagindex].ToString();
MyTreeView.Nodes.Add(Tn);
LoadNode(Tn, MyDataTable, ParentText, Tagindex, Textindex);
}
}
/// <summary>
/// 树的根
/// </summary>
/// <param name="tn">上级目录</param>
/// <param name="ds">数据DATASET</param>
/// <param name="ParentText">目录名称</param>
/// <param name="Tagindex">主键ID</param>
/// <param name="Textindex">名称的主键</param>
private static void LoadNode(TreeNode Tn, DataTable MyDataTable, string ParentText, int Tagindex, int Textindex)
{
DataRow[] T = MyDataTable.Select(ParentText + "='" + Tn.Tag.ToString() + "'");
for (int i = 0; i != T.Length; i++)
{
TreeNode treeN = new TreeNode();
treeN.Tag = T[i][Tagindex].ToString();
treeN.Text = T[i][Textindex].ToString();
Tn.Nodes.Add(treeN);
LoadNode(treeN, MyDataTable, ParentText, Tagindex, Textindex);
}
}
#endregion
#region 目录树结构
/// <summary>
/// 绘制树
/// </summary>
/// <param name="MyTreeView">数控件</param>
/// <param name="PathList">数据列表 "a,b,c" "b,b,c" "a,b,d"</param>
/// <param name="SplitChar">分割符号</param>
public static void GetTree(TreeView MyTreeView, IList<string> PathList, char SplitChar)
{
for (int i = 0; i != PathList.Count; i++)
{
int Index = 1;
IList<string> _TempNode = PathList[i].Split(SplitChar);
if (_TempNode[0].Trim().Length != 0)
{
string NodeID = _TempNode[0];
if (MyTreeView.Nodes[NodeID] == null)
{
MyTreeView.Nodes.Add(NodeID, _TempNode[0]);
AddNode(MyTreeView.Nodes[NodeID], _TempNode, ref Index);
}
else
{
AddNode(MyTreeView.Nodes[NodeID], _TempNode, ref Index);
}
}
}
}
/// <summary>
/// 树的根
/// </summary>
/// <param name="Tn">上级目录</param>
/// <param name="_TempNode">数据</param>
/// <param name="Index">目前索引</param>
private static void AddNode(TreeNode Tn, IList<string> PathList, ref int Index)
{
if (Index > PathList.Count - 1) return;
if (PathList[Index].Trim().Length == 0)
{
Index++;
if (Index > PathList.Count - 1) return;
}
string NodeID = PathList[Index];
if (Tn.Nodes[NodeID] == null)
{
Tn.Nodes.Add(NodeID, PathList[Index]);
Index++;
AddNode(Tn.Nodes[NodeID], PathList, ref Index);
}
else
{
Index++;
AddNode(Tn.Nodes[NodeID], PathList, ref Index);
}
}
#endregion
支持路径方式和数据表结构方式。
如果是在WEBFROM下修改响应的控件名。
调用
List<string> Test =new List<string>();
Test.Add(@"C:/");
Test.Add(@"C:/Temp");
Test.Add(@"C:/Temp/A");
GetTree(TreeView1, Test , '//');
#region 数据树结构
/// <summary>
/// 绘制树
/// </summary>
/// <param name="Tv">树控件</param>
/// <param name="Ds">数据DATASET</param>
/// <param name="Tagindex">主键INDEX</param>
/// <param name="Textindex">文本的INDEX</param>
/// <param name="Parentindex">父目录的INDEX</param>
/// <param name="ParentStar">父的条件</param>
public static void GetTree(TreeView MyTreeView,DataTable MyDataTable,int Tagindex,int Textindex,int Parentindex,string ParentStar)
{
string ParentText = MyDataTable.Columns[Parentindex].ColumnName;
DataRow[] T = MyDataTable.Select(ParentText +"='" + ParentStar+"'");
for (int i = 0; i != T.Length; i++)
{
TreeNode Tn = new TreeNode();
Tn.Text = T[i][Textindex].ToString();
Tn.Tag = T[i][Tagindex].ToString();
MyTreeView.Nodes.Add(Tn);
LoadNode(Tn, MyDataTable, ParentText, Tagindex, Textindex);
}
}
/// <summary>
/// 树的根
/// </summary>
/// <param name="tn">上级目录</param>
/// <param name="ds">数据DATASET</param>
/// <param name="ParentText">目录名称</param>
/// <param name="Tagindex">主键ID</param>
/// <param name="Textindex">名称的主键</param>
private static void LoadNode(TreeNode Tn, DataTable MyDataTable, string ParentText, int Tagindex, int Textindex)
{
DataRow[] T = MyDataTable.Select(ParentText + "='" + Tn.Tag.ToString() + "'");
for (int i = 0; i != T.Length; i++)
{
TreeNode treeN = new TreeNode();
treeN.Tag = T[i][Tagindex].ToString();
treeN.Text = T[i][Textindex].ToString();
Tn.Nodes.Add(treeN);
LoadNode(treeN, MyDataTable, ParentText, Tagindex, Textindex);
}
}
#endregion
#region 目录树结构
/// <summary>
/// 绘制树
/// </summary>
/// <param name="MyTreeView">数控件</param>
/// <param name="PathList">数据列表 "a,b,c" "b,b,c" "a,b,d"</param>
/// <param name="SplitChar">分割符号</param>
public static void GetTree(TreeView MyTreeView, IList<string> PathList, char SplitChar)
{
for (int i = 0; i != PathList.Count; i++)
{
int Index = 1;
IList<string> _TempNode = PathList[i].Split(SplitChar);
if (_TempNode[0].Trim().Length != 0)
{
string NodeID = _TempNode[0];
if (MyTreeView.Nodes[NodeID] == null)
{
MyTreeView.Nodes.Add(NodeID, _TempNode[0]);
AddNode(MyTreeView.Nodes[NodeID], _TempNode, ref Index);
}
else
{
AddNode(MyTreeView.Nodes[NodeID], _TempNode, ref Index);
}
}
}
}
/// <summary>
/// 树的根
/// </summary>
/// <param name="Tn">上级目录</param>
/// <param name="_TempNode">数据</param>
/// <param name="Index">目前索引</param>
private static void AddNode(TreeNode Tn, IList<string> PathList, ref int Index)
{
if (Index > PathList.Count - 1) return;
if (PathList[Index].Trim().Length == 0)
{
Index++;
if (Index > PathList.Count - 1) return;
}
string NodeID = PathList[Index];
if (Tn.Nodes[NodeID] == null)
{
Tn.Nodes.Add(NodeID, PathList[Index]);
Index++;
AddNode(Tn.Nodes[NodeID], PathList, ref Index);
}
else
{
Index++;
AddNode(Tn.Nodes[NodeID], PathList, ref Index);
}
}
#endregion
相关文章推荐
- WinForm 树结构的绘制与数据表的映射
- DirectX学习笔记(四):利用D3DX网格数据结构绘制可旋转茶壶
- 数据可视化上集:使用Gliffy,ProcessOn迅速绘制论文中的流程图,系统结构图
- pandas库中数据结构DataFrame的绘制函数
- LightningChart Ultimate使用教程:在winform中绘制点线数据
- DirectX学习笔记(四):利用D3DX网格数据结构绘制可旋转茶壶
- Windows下使用python绘制caffe中.prototxt网络结构数据可视化
- 【数据结构与算法】 FIND!流程图绘制工具
- 数据结构实验之链表二:逆序建立链表
- Oracle与Sql Server复制表结构和数据
- 数据结构实验之排序五:归并求逆序数
- 【数据结构与算法】插入排序
- 数据结构实验之排序六:希尔排序
- 使用matlab绘制从KEIL memory导出的内存数据
- 数据结构——算法之(026)( 调整数组顺序使奇数位于偶数前面)
- 数据结构之二叉查找树
- 策划入门(五):开始绘制系统的结构流程
- sdut 2088 数据结构实验之栈与队列十一:refresh的停车场
- NOJ 2024 入栈序列和出栈序列 数据结构理解
- c 数据结构