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;
{
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)
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){
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;
}
{
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)
相关文章推荐
- ASP.net MVC、Extjs多级目录(理论上可以无限级、非递归)treepanel显示和数据库(多级目录)存储结构的设计(下篇)
- 常用的在数据库中建立无限级树形菜单的asp.net代码
- ASP.NET的面包屑导航控件、树形导航控件、菜单控件
- asp.net 树形目录
- Asp.net树形产品结构菜单,根据产品分类获取产品及其子类的所有产品和数量统计
- JQuery AJAX & JSON 使用示例一步到位 (DEMO:ASP.NET + MSSQL 无限级树形菜单)
- ASP.net MVC、Extjs多级目录(理论上可以无限级、非递归)treepanel显示和数据库(多级目录)存储结构的设计(上篇)
- asp.net权限目录树,适合网站权限设计
- 菜鸟用onload实现“只展开当前节点下级目录”的asp树形菜单
- ASP.NET AJAX 无限级 JS 树形菜单
- ASP.NET AJAX无限级JS树形菜单
- asp.net TreeView递归循环子节点生成树形菜单实例
- asp.net权限目录树,适合网站权限设计
- 在ASP.NET MVC下实现树形导航菜单
- ASP.NET的面包屑导航控件、树形导航控件、菜单控件
- asp.net 树形目录
- 给Asp.Net Forums的后台管理菜单做一个树形外衣
- 在asp.net里怎么跟据用户权限来生成树形菜单
- asp.net权限目录树,适合网站权限设计