最近想写个连接数据库的树形目录,目录表结构如下:
![图片](https://i-blog.csdnimg.cn/blog_migrate/632b23977f85f14e915325b84e455e78.jpeg)
总体思路:以Pid作为查询层次,每一层里面有递归下一层。
load里面的代码如下:
声明全局变量如下
SqlConnection conn;
![图片](https://i-blog.csdnimg.cn/blog_migrate/632b23977f85f14e915325b84e455e78.jpeg)
总体思路:以Pid作为查询层次,每一层里面有递归下一层。
load里面的代码如下:
声明全局变量如下
SqlConnection conn;
SqlCommand cmd;
SqlDataAdapter sda;
DataTable dt;
//---------------------------------------------
//------------------------------------------------------------------------------------------------------
递归节点添加函数如下:
//------------------------------------------------------------------------------------------------
//---------------------------------------------
conn = new SqlConnection();
conn.ConnectionString = "Data Source=(local);Initial Catalog=TreeCeshi;User Id=sa;Password=123456";
conn.Open();
cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from ceshi order by Pid";
sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
// ds = new DataSet();
dt = new DataTable();
sda.Fill(dt);
cmd.ExecuteNonQuery();
TreeNode mainNode = new TreeNode();
mainNode.Name = "main";
mainNode.Text = "总目录";
this.treeView1.Nodes.Add(mainNode);
var rows = dt.Select("Pid='0'");
TreeNode node;
foreach (var row in rows)
{
node = new TreeNode();
node.Name = row["cid"].ToString();
node.Text = row["name"].ToString();
mainNode.Nodes.Add(node);
// myPid++;
addTree(node, dt,node.Name);
}
mainNode.Expand();
//------------------------------------------------------------------------------------------------------
递归节点添加函数如下:
private void addTree(TreeNode Pnode,DataTable mytable,string rowIndx)
{
var rows = mytable.Select("Pid=" + rowIndx.ToString());
TreeNode node1;
int tmPid = 0;
foreach (var rw in rows)
{
node1 = new TreeNode();
node1.Name = rw["cid"].ToString();
node1.Text = rw["name"].ToString();
Pnode.Nodes.Add(node1);
addTree(node1, mytable, node1.Name);
}
}