日期:2014-05-19  浏览次数:20979 次

treeview控件使用问题
我用的是vs。net   2005(c#),我在开发windows应用程序时,在窗体中加载一个treeview控件,在窗体的form_load事件中我怎么通过程序代码加载treeview的根节点和子节点(多级子节点[子节点中还有子节点]),节点的内容,在数据库中存放,在线等待,谢谢!!!

------解决方案--------------------
给你一个示例:
1.数据库中有一个表名为:menu,有四人字段(MenuCode <文本型,用作关键字段> ,MenuName <文本型,用作TreeView的Text属性> ,MenuLevel <数字型,用作树级别> ,menuFatherCode <文本型,该树的上一级别编码> )
MenuCode MenuName MenuLevel menuFatherCode
001 张三公司 0 001 <如果是根级就等本级的MenuCode>
00101 销售部 1(只要大于0) 001 <上一级就是 "张三公司 "的MenuCode字段值>
0010101 甲职工 2(只要大于0) 00101
002 李四公司 0 002
00201 财务部 1 002


2.现在写一个对象(类):(该对象不论的加载何表,均可以实现加载视图,但有一定的规则,就如上表)
必须的引用
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;


/// <summary>
/// 从表中加载树形菜单到控件TreeView
/// </summary>
public class TreeViewLoad
{
private DataTable _SetDataTable;
private string _KeyField = " ";
private string _FatherField = " ";
private string _TextField = " ";
private string _LevelField = " ";
private string _TagField = " ";
private DataRow[] SonRow; //子节点集合行

#region 树形菜单属性
/// <summary>
/// 设置需要加载数据的表
/// </summary>
public DataTable SetDataTable
{
get { return _SetDataTable; }
set { _SetDataTable = value; }
}
/// <summary>
/// 树形菜单Key的字段
/// </summary>
public string KeyField
{
get { return _KeyField; }
set { _KeyField = value; }
}
/// <summary>
/// 树形菜单的父级字段
/// </summary>
public string FatherField
{
get { return _FatherField; }
set { _FatherField = value; }
}
/// <summary>
/// 树形菜单的Text属性字段
/// </summary>
public string TextField
{
get { return _TextField; }
set { _TextField = value; }
}
/// <summary>
/// 树形菜单的Tag属性字段
/// </summary>
public string TagFiele
{
get { return _TagField; }
set { _TagField = value; }
}

/// <summary>
/// 级别字段
/// </summary>
public string LevelField
{
get { return _LevelField; }
set { _LevelField = value; }
}

#endregion

/// <summary>
/// 加载树形菜单
/// </summary>
/// <param name= "TreeViewObject "> 树形菜单对象 </param>
public void LoadTreeView(TreeView TreeViewObject, ImageList ItemImage)
{
TreeViewObject.Nodes.Clear(); //清除数据
TreeViewObject.ImageList = ItemImage;
int tempID=0; //定义树最小的字段起始值(目的是分级显示)
if (SetDataTable.Rows.Count> 0)
{
DataView dv = new DataView(SetDataTable);
dv.Sort = LevelField + " ASC ";
te