怎么用递归 绑定数据库 显示在treeview中
这是以前写的,可以参考一下!
treeView里面实现数据绑定
DataSet ds;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//以下是绑定数据
SqlConnection con = new
SqlConnection("server=.;database=Test;uid=sa;pwd=sa");
SqlDataAdapter adapter = new SqlDataAdapter("select * from TreeViewTest", con);
ds = new DataSet();
adapter.Fill(ds, "TreeViewTest");
//初始化TreeView :TreeView1.Nodes:表示TreeView1的节点集合 ,"0"表示的是最顶上节点没有父节点
InitTree(TreeView1.Nodes, "0");
}
}
/// <summary>
/// 初始化TreeView
/// </summary>
/// <param name="Nds">TreeNodeCollection:节点的集合</param>
/// <param name="parentId">parentId:某一节点的父节点ID</param>
private void InitTree(TreeNodeCollection Nds, string parentId)
{
DataView dv = new DataView();
TreeNode tmpNd;
//string intId;
dv.Table = ds.Tables["TreeViewTest"];
//筛选出 ParentId【父节点ID】为传入值【parentId】的所有的数据行 为"0"时表时选出所有的顶节点数据行
dv.RowFilter = "ParentId='" + parentId + "'";
//将筛选出的所有的数据行添加到节点
foreach (DataRowView drv in dv)
{
tmpNd = new TreeNode();
tmpNd.Value = drv["NodeId"].ToString();
tmpNd.Text = drv["NodeName"].ToString();
Nds.Add(tmpNd);
//判断是不是存在drv["NodeId"]的ChildNodes,存在的话添加,不存在就继续遍历
DataView dvTemp = new DataView();
dvTemp.Table = ds.Tables["TreeViewTest"];
dvTemp.RowFilter = "ParentId='" + drv["NodeId"].ToString() + "'";
if (dvTemp.Count != 0)
{
InitTree(tmpNd.ChildNodes, tmpNd.Value);
}
}
}