用递归查询数据,绑定到TreeView 上,我记的刚出来找工作好像就倒在了这个题下,通过下面的例子,希望对不熟悉用递归绑定TreeView的同行有所帮助,看代码:
实现的效果如图:
数据库结构如图:
代码如下:
/// <summary>
/// 查询父节点
/// </summary>
/// <param name="conn"></param>
public void selectParent(SqlConnection conn)
{
string sql = "select * from treeInfo where pid=0";
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(dt);
for (int i = 0; i < dt.Rows.Count;i++)
{
TreeNode tn = new TreeNode();
tn.Text = dt.Rows[i]["name"].ToString();
tn.Value = dt.Rows[i]["id"].ToString();
this.TreeView1.Nodes.Add(tn);
selectChild(tn);
}
}
/// <summary>
/// 递归查询子节点
/// </summary>
public void selectChild(TreeNode tnn)
{
string sql = "select * from treeInfo where pid="+tnn.Value+"";
DataTable dt1 = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(dt1);
for (int i = 0; i < dt1.Rows.Count; i++)
{
TreeNode tn = new TreeNode();
tn.Text = dt1.Rows[i]["name"].ToString();
tn.Value = dt1.Rows[i]["id"].ToString();
tnn.ChildNodes.Add(tn);
selectChild(tn);
}
}
最后在Load事件里面调用一下selectParent(SqlConnection conn) 这个方法,在传个SqlConnection 的参数就 OK 了!!!!!