TREEVIEW只输入表名,父ID,节点ID,节点名就得到树型结构之一(转)

调用时如下:

/// 树型控件名称
/// 一层的功能名称
/// 数据库中的表名
/// 父节点的字段名
/// 节点的字段名
/// 节点的数据

newTreeInfoBll.InitTreeData(this.treeView1,"系统业务表","T_S_SystemTableIndex","pid000","name00","id0000");

有什么不懂的或不明白的地方请大家给我发EMAIL,谢谢,希望大家一起进步

---------------------------------

TREEINFO.CS = 数据控制层

using System;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;

namespace DAL
{
///
/// TreeInfo
/// 树型初使化数据库的所有信息
/// 乔高峰 2005-04-26
/// 功能:实现所有树型的初使化
///
public class TreeInfo
{
// private string PARM_TableName;
///
/// 取某表的所有数据(缺少表名)
///
private string SQL_SELECT_TREE = "SELECT * FROM ";
///
/// 保存结果的数据集
/// scf
///
private DataSet newDataSet;
///
/// 为过滤方便的视图
///
private DataView newDataView;
///
/// 无参数的构造函数
///
public TreeInfo()
{
}
///
/// 初使化树型
/// 乔高峰 2005-04-28
///
/// 树型控件名称
/// 一层的功能名称
/// 数据库中的表名
/// 父节点的字段名
/// 节点的字段名
/// 节点的数据
public void InitTreeData(TreeView newTreeView,string TreeViewName,string TableName,string ParentNameField,string CurrentNameField,string CurrentDataField)
{

//增加第一层节点的名称,为该树的功能名称
TreeNode newTreeViewName = new TreeNode();
//设置该节点的显示文本
newTreeViewName.Text = TreeViewName;
树型的图标
//newTreeViewName.ImageIndex = ;
选择时的图标
//newTreeViewName.SelectedImageIndex = ;
newTreeView.Nodes.Add(newTreeViewName);
//增加第二层数据库里最高层的数据
//从数据库中取数据
try
{
this.newDataSet = new DataSet();
this.SQL_SELECT_TREE = this.SQL_SELECT_TREE + TableName;

SqlHelper.FillDataset(SqlHelper.CONN_STRING,CommandType.Text,this.SQL_SELECT_TREE,this.newDataSet,new string[] {TableName});
this.newDataView = new DataView();
this.newDataView.Table = this.newDataSet.Tables[TableName];
}
catch(Exception ee)
{
MessageBox.Show(ee.Message);
}
CreateTreeNodes(newTreeViewName,ParentNameField,"0",CurrentNameField,CurrentDataField);
}
///
/// 用递归的方法,生成树型
/// 乔高峰 2005-04-28
///
/// 一层的节点索引
/// 父节点的字段名
/// 父节点的字段值
/// 节点的字段名
/// 节点的数据
public void CreateTreeNodes(TreeNode newTreeViewName,string ParentNameField,string ParentNameValue,string CurrentNameField,string CurrentDataField)
{
try
{
//规定父节点为0的为第一层节点
this.newDataView.RowFilter = ParentNameField + " = '" + ParentNameValue+"'";
//判断是否有记录
if (this.newDataView.Count != 0)
{

//MessageBox.Show(this.newDataView.Count.ToString()+ "运行");
//递归运算
foreach(DataRowView newDataRowView in this.newDataView)
{
//在循环外有一条这个语句
//这条语句是为了找回递归时动态失去的数据
this.newDataView.RowFilter = ParentNameField + " = '" + ParentNameValue+"'";
//新增一个节点
TreeNode newTreeNode = new TreeNode();
//设置该节点的显示文本
newTreeNode.Text = newDataRowView[CurrentNameField].ToString().Trim();
//保存该节点的数据 ID
newTreeNode.Tag = newDataRowView[CurrentDataField].ToString().Trim();
// //树型的图标
// newTreeNode.ImageIndex = ;
// //选择时的图标
// newTreeNode.SelectedImageIndex = ;
//增回节点
newTreeViewName.Nodes.Add(newTreeNode);

//递归运算
CreateTreeNodes(newTreeNode,ParentNameField,newDataRowView[CurrentDataField].ToString().Trim(),CurrentNameField,CurrentDataField);
}
}


}
catch(Exception ee)
{
MessageBox.Show(ee.Message);
}
}

}

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8781179/viewspace-924773/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8781179/viewspace-924773/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值