表:
perid 父ID, id 主键(子ID)
____________________________________
protected void Page_Load(object sender, EventArgs e)
{
using (SqlConnection Conn = new SqlConnection(logicClass.strConn()))
{
Conn.Open();
string strsql = "select preid,id,name,keynum,ctime,orderid from doctree ";
SqlDataAdapter sa = new SqlDataAdapter(strsql, Conn);
DataSet ds = new DataSet();
sa.Fill(ds);
this.ViewState["ds"] = ds;
Conn.Dispose();
Conn.Close();
}// end using
}
//递归添加树的节点
public void AddTree(int ParentID, TreeNode pNode)
{
DataSet ds = (DataSet)this.ViewState["ds"];
DataView dvTree = new DataView(ds.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[preid] = " + ParentID;
dvTree.Sort = "orderid";
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{ //添加根节点
Node.Text = Row["name"].ToString();
TreeView1.Nodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归
}
else
{ //添加当前节点的子节点
Node.Text = Row["name"].ToString();
// pNode.Nodes.Add(Node);
pNode.ChildNodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归
}
}
}
本文介绍了一种使用ASP.NET和SQL Server实现动态树形菜单的方法。通过递归函数逐级加载数据库中的菜单数据,并展示如何构建树形结构。此方法适用于需要多层次导航的网站。
&spm=1001.2101.3001.5002&articleId=626238&d=1&t=3&u=2938bc1bbd384cdc84877c179927f9a1)
371

被折叠的 条评论
为什么被折叠?



