这里提供一个treeview控件绑定树形层级结构数据的实例:
数据库表结构、数据:
aspx页面:
<asp:treeview ID="myTreeView" runat="server"></asp:treeview>
aspx.cs页面:
protected void Page_Load(object sender, EventArgs e)
{
//获取数据集(以你自己的方式获取即可)
SQLBase sb = new SQLBase();
DataTable dt = sb.GetDataTable("select id,parentID,Name from TreeData");
//调用函数,绑定treeview数据源。首次节点集合即为treeview的所有节点,条件即为顶级的父级ID
BindTree(dt, myTreeView.Nodes, 0);
}
/// <summary>
/// treeview绑定数据源
/// </summary>
/// <param name="dt">绑定的总数据集</param>
/// <param name="tnc">treeview节点集合</param>
/// <param name="val">主节点id</param>
public void BindTree(DataTable dt,TreeNodeCollection tnc,int val)
{
DataView dv = new DataView(dt);//将DataTable存到DataView中,以便于筛选数据
TreeNode tn;
string filter = (val == 0) ? "parentID=0" : string.Format("parentID={0}", val);//为DataView构建筛选条件
dv.RowFilter = filter;//为DataView赋予筛选条件
//遍历筛选后的结果集
foreach (DataRowView drv in dv)
{
tn = new TreeNode();//实例化一个treeview节点
tn.Value = drv["id"].ToString();//绑定节点value
tn.Text = drv["Name"].ToString();//绑定节点显示text
tnc.Add(tn);//将该节点加入到TreeNodeCollection(节点集合)中
BindTree(dt, tn.ChildNodes, int.Parse(drv["id"].ToString()));//递归层层绑定treeview
}
}
运行效果:
摘自:http://blog.163.com/zhaoyanping_1125/blog/static/20132915320121261153945/