使用TreeView控件创建树形结构
数据库结构设计
本文使用的是MS-SQLSERVER2000,涉及到以下两个数据库表:
表名 | 说明 | 表名 | 说明 |
MainBords | 主版编号表 | SubBorads | 子版表 |
各表中的字段如下:
MainBoards中的字段设置
字段 | 类型 | 说明 |
MainID | 整型 | 索引号 |
MainName | 字符型 | 主版名称 |
SubBoards中的字段设置:
SubBoards中的字段设置:
SubBoards中的字段设置:
SubBoards中的字段设置:
字段 | 类型 | 说明 |
SubID | 整型 | 索引号 |
MainID | 整型 | 对应的主版编号 |
SubName | 字符型 | 子版名称 |
字段 | 类型 | 说明 |
SubID | 整型 | 索引号 |
MainID | 整型 | 对应的主版编号 |
SubName | 字符型 | 子版名称 |
字段 | 类型 | 说明 |
SubID | 整型 | 索引号 |
MainID | 整型 | 对应的主版编号 |
SubName | 字符型 | 子版名称 |
字段 | 类型 | 说明 |
SubID | 整型 | 索引号 |
MainID | 整型 | 对应的主版编号 |
SubName | 字符型 | 子版名称 |
| ||
| ||
| ||
| ||
3.2 创建树形结构:
3.2 创建树形结构:
3.2 创建树形结构:
3.2 创建树形结构:
3.2 创建树形结构:
要实现树形结构,我们首先必须添加主节点,也就是MainBoards表。
先连接数据库:
SqlConnection CN = new SqlConnection();
//初始化连接字符串,请根据实际情况修改
CN.ConnectionString= "data source=localhost;initial catalog=bbs;persist security info=False;user id=sa;Password=sa;";
CN.Open();
SqlDataAdapter adp = new SqlDataAdapter("select * from MainBoards",CN);
DataSet ds=new DataSet();
adp.Fill(ds);
添加主节点
int numMain=ds.Tables[0].Rows.Count;
for(int i=0;i<numMain;i++)
{
TreeNode Node=new TreeNode() ;
Node.Text =ds.Tables[0].Rows[i][1].ToString();
tree.Nodes.Add(Node);
Node.Expanded=true;
int MainID=Convert.ToInt32(ds2.Tables[0].Rows[i][0].ToString());
//调用AddSubTree方法添加子节点
AddSubTree(MainID,Node);
AddSubTree方法
public void AddSubTree(int MainID,TreeNode pNode)
{ //读取SubBorads表中的内容
SqlConnection con = new SqlConnection();
con.ConnectionString= "data source=localhost;initial catalog=bbs;persist security info=False;user id=sa;Password=sa;";
con.Open();
SqlDataAdapter adp1 = new SqlDataAdapter("select * from SubBoards where MainID='"+MainID+"'",con);
DataSet ds1=new DataSet();
adp1.Fill(ds1);
int numSub=ds1.Tables[0].Rows.Count;
//在给定的主节点下添加子节点
for(int i=0;i<numSub;i++)
{
TreeNode Node=new TreeNode() ;
Node.Text =ds1.Tables[0].Rows[i][2].ToString();
pNode.Nodes.Add(Node);
//在此设置节点点击以后定向到页面:
Node.NavigateUrl="display.aspx?id=";
Node.Expanded=false;}
}
最后调试实现如下效果: