您的位置:首页 > 编程语言 > ASP

ASP.NET 树形菜单目录设计

2009-09-17 14:28 316 查看
目录结构存储在数据库中,表结构如下:

id 节点id号

name 节点名称

parentid 节点的父节点id号

navigateurl 节点指向的url地址

代码如下:

设计一个 MenuTree类

1.添加System.Web.UI.WebControls的引用

public class MenuTree
{
private TreeView tv;

private DataSet GetData()
{
SqlConnection conn = new SqlConnection(“connection string”)
string str = "select * from menu";
SqlDataAdapter sda = new SqlDataAdapter(str, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
if(conn != null)
{
conn.Close();
conn.Dispose();
}
return ds;
}

public void BindTv(TreeView TreeView1)
{
tv = TreeView1;
AddTree(0, (TreeNode)null);
}

private void AddTree(int parentId,TreeNode pnode)
{
DataSet ds = GetData();
DataView dv = new DataView(ds.Tables[0]);
dv.RowFilter = "[parentid]=" + parentId;
foreach (DataRowView Row in dv)
{
TreeNode node = new TreeNode();
if (pnode == null)
{
node.Text = Row["name"].ToString();
tv.Nodes.Add(node);
node.Expanded = true;
AddTree(Int32.Parse(Row["id"].ToString()),node); //递归方法
}
else
{
node.Text = Row["name"].ToString();
pnode.ChildNodes.Add(node);
node.Expanded = true;
AddTree(Int32.Parse(Row["id"].ToString()), node); //递归方法
}
}

}
}

在前台页面中添加如下代码

protected void Page_Load(object sender, EventArgs e)
{
MenuTree mt = new MenuTree();
mt.BindTv(TreeView1);
}

以上代码测试可行。

补充:将数据库的连接信息放到web.config文件中

web.config

<connectionStrings>
<add name="MenuDB" connectionString ="Data Source=localhost;Initial Catalog=Study;User ID=sa;Password=fangtou"/>
</connectionStrings>

MenuTree.cs

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MenuDb"].ConnectionString);

(使用ConfigurationManager类,需要引用System.Configuration)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: