TreeView的数据绑定资源默认的有两类:XML和SiteMap
这两类资源的共同特点就是资源文件是固定保存在项目中的,这一类方便我们使用来做菜单,所以TreeView归类在导航控件中.这里的绑定我不做详细的叙述,VS2005中可以很方便的使用.
TreeView还有一种用法是用来显示数据信息及其数据信息的层级信息,这里上面的两类就不能满足我们的需要,我们需要的是与数据库资源连接,而形成动态的TreeView.同样我们还可以在数据库中使用树的双亲表示法把树描述出来,例如
ID | Name | ParentID |
1 | 1 | 0 |
2 | 2 | 0 |
3 | 3 | 0 |
4 | 4 | 1 |
5 | 5 | 1 |
6 | 6 | 2 |
7 | 7 | 2 |
8 | 8 | 3 |
9 | 9 | 7 |
使用这种的数据库方法可以很方便的绑定到TreeView中,形成一个无限动态树.(当然还有其他的数据库的方法)
private
void
InitTree(TreeNodeCollection Nds,
string
ParentId)
... {
DataView dvroles = new DataView();
TreeNode tmpNd;
string strRID;
dvroles.Table = csa.CreateDataSet("DS1").Tables["T1"];//DataSet的DataTable表中
dvroles.RowFilter = " ParentID=" + ParentId;
foreach (DataRowView drvrole in dvroles)
...{
strRID = drvrole["ID"].ToString();
tmpNd = new TreeNode();
tmpNd.Value = drvrole["ID"].ToString();
tmpNd.Text = drvrole["Name"].ToString();
tmpNd.Target = drvrole["ParenID"].ToString();
Nds.Add(tmpNd);
InitRoleTree(tmpNd.ChildNodes, strRID);
}
}
... {
DataView dvroles = new DataView();
TreeNode tmpNd;
string strRID;
dvroles.Table = csa.CreateDataSet("DS1").Tables["T1"];//DataSet的DataTable表中
dvroles.RowFilter = " ParentID=" + ParentId;
foreach (DataRowView drvrole in dvroles)
...{
strRID = drvrole["ID"].ToString();
tmpNd = new TreeNode();
tmpNd.Value = drvrole["ID"].ToString();
tmpNd.Text = drvrole["Name"].ToString();
tmpNd.Target = drvrole["ParenID"].ToString();
Nds.Add(tmpNd);
InitRoleTree(tmpNd.ChildNodes, strRID);
}
}
在这里我们可以进行控制的树的信息有
Value | 节点的ID |
Text | 节点的显示信息 |
Target | 关联网页内容的目标窗口,如果没有关联网页,也可以做一个数据容器 |
ToolTip | 节点文本提示工具 |
ImageUrl | 节点图片 |
ImageToolTip | 节点图片文本提示工具 |