ASP.NET 树形菜单目录设计

目录结构存储在数据库中,表结构如下:

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)

posted @ 2009-09-17 14:28  斑点海豚---寂静的港湾  阅读(1045)  评论(0编辑  收藏  举报