WinForm 树结构的绘制与数据表的映射
2011-07-14 16:40
288 查看
源:WinForm 树结构的绘制与数据表的映射
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
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
相关文章推荐
- WINFORM树结构的绘制和数据表结构的绘制。
- DirectX学习笔记(四):利用D3DX网格数据结构绘制可旋转茶壶
- Hibernate处理一个实体映射多张相同结构的数据表--动态映射
- PTA-数据结构 5-42 整型关键字的散列映射 (25分)
- DirectX学习笔记(四):利用D3DX网格数据结构绘制可旋转茶壶
- js中数据结构数组Array、映射Map、集合Set、对象、JSON
- java数据结构之树集TreeSet与书映射(TreeMap)
- java数据结构之树集TreeSet与书映射(TreeMap)
- Hive-JSON 原始数据映射 Hive 表结构
- hibernate映射树形结构数据
- 【数据结构与算法】 FIND!流程图绘制工具
- Windows下使用python绘制caffe中.prototxt网络结构数据可视化
- 数据可视化上集:使用Gliffy,ProcessOn迅速绘制论文中的流程图,系统结构图
- LightningChart Ultimate使用教程:在winform中绘制点线数据
- 将对象层次结构映射到 XML 数据
- [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义
- 数据结构上机4.4字符串映射加密解密
- pandas库中数据结构DataFrame的绘制函数
- (转)Matlab映射表数据结构(containers.Map)
- c语言实现通用数据结构(五):通用映射(HashMap)