`
chenxueyong
  • 浏览: 336668 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

利用ASP.NET的menu和SQL数据库制作无限级别菜单

阅读更多
using System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.Data.SqlClient;
using
WebTools;
public partial class
Default4 : System.Web.UI.Page
{
    
public int
parentID;
    
public Tools Connectionstr1 = new
Tools();
    
protected void Page_Load(object
sender, EventArgs e)
    
{
        
string Connectionstr =
Connectionstr1.connStr.ConnectionString;
         SqlConnection SconnStr
= new
SqlConnection(Connectionstr);
        
//设定数据库操作命令

         SconnStr.Open();
         SqlCommand Scmd
= new SqlCommand("select * from menuTable where parentID=0"
, SconnStr);
         SqlDataReader odr
=
Scmd.ExecuteReader();
        
while
(odr.Read())
        
{
             MenuItem menuNode
= new
MenuItem();
             menuNode.Text
= odr["menuName"
].ToString();
             menuNode.Value
= odr["id"
].ToString();
             menuNode.Enabled
= true
;
             menuNode.Target
= odr["target"
].ToString();
             menuNode.NavigateUrl
= odr["url"
].ToString();
             Menu1.Items.Add(menuNode);
             parentID
= Convert.ToInt16(odr["id"
].ToString());
             addchildmenu1(menuNode, menuNode.Value);
         }

        
//关闭数据库连接
         Scmd.Connection.Close();
     }

    
protected void addchildmenu1(MenuItem pnode,string
pid)
    
{
        
string Connectionstr =
Connectionstr1.connStr.ConnectionString;
         SqlConnection SconnStr1
= new
SqlConnection(Connectionstr);
        
//设定数据库操作命令

         SconnStr1.Open();
         SqlCommand Scmd1
= new SqlCommand("select * from menuTable where parentID=" + parentID + ""
, SconnStr1);
         SqlDataReader odr
=
Scmd1.ExecuteReader();
        
while
(odr.Read())
        
{
             MenuItem menuNode
= new
MenuItem();
             menuNode.Text
= odr["menuName"
].ToString();
             menuNode.Value
= odr["id"
].ToString();
             menuNode.Enabled
= true
;
             menuNode.Target
= odr["target"
].ToString();
             menuNode.NavigateUrl
= odr["url"
].ToString();
             pnode.ChildItems.Add(menuNode);
             parentID
= Convert.ToInt16(odr["id"
].ToString());
             addchildmenu2(menuNode, menuNode.Value);
         }

        
//关闭数据库连接
         Scmd1.Connection.Close();
     }

    
protected void addchildmenu2(MenuItem pnode, string
pid)
    
{
        
string Connectionstr =
Connectionstr1.connStr.ConnectionString;
         SqlConnection SconnStr1
= new
SqlConnection(Connectionstr);
        
//设定数据库操作命令

         SconnStr1.Open();
         SqlCommand Scmd1
= new SqlCommand("select * from menuTable where parentID=" + parentID + ""
, SconnStr1);
         SqlDataReader odr
=
Scmd1.ExecuteReader();
        
while
(odr.Read())
        
{
             MenuItem menuNode
= new
MenuItem();
             menuNode.Text
= odr["menuName"
].ToString();
             menuNode.Value
= odr["id"
].ToString();
             menuNode.Enabled
= true
;
             menuNode.Target
= odr["target"
].ToString();
             menuNode.NavigateUrl
= odr["url"
].ToString();
             pnode.ChildItems.Add(menuNode);
             parentID
= Convert.ToInt16(odr["id"
].ToString());
             addchildmenu1(menuNode, menuNode.Value);
         }

        
//关闭数据库连接
         Scmd1.Connection.Close();
     }

}
分享到:
评论

相关推荐

    asp.net知识库

    为ASP.NET封装的SQL数据库访问类 DataTable.Select方法的性能问题 .NET 2.0里使用强类型数据创建多层应用 ADO.NET实用经验无保留曝光 有了System.Data.IDataReader,一切皆成数据 理解DataSet的数据缓存机制 存储过程...

    ASP.NET常用代码

    ASP.NET常用代码 1. 打开新的窗口并传送参数: 传送参数: response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>") 接收参数: string a = Request....

    漂亮的ComponentArtWebUI web界面

    专为ASP.NET而设计:为三个先进且更强大的框架而设计:ASP.NET 1.0, ASP.NET 2.0和ASP.NET AJAX。 强大的客户端呈现技术:行业中最先进的Web用户界面技术。 深入整合ASP.NET AJAX:最理想的完全应用AJAX框架的控件。...

    漂亮的ComponentArtWebUI及Demo源码(商业版带安装序列号)part2

    专为ASP.NET而设计:为三个先进且更强大的框架而设计:ASP.NET 1.0, ASP.NET 2.0和ASP.NET AJAX。 强大的客户端呈现技术:行业中最先进的Web用户界面技术。 深入整合ASP.NET AJAX:最理想的完全应用AJAX...

    漂亮的ComponentArtWebUI及Demo源码(商业版带安装序列号)part1

    专为ASP.NET而设计:为三个先进且更强大的框架而设计:ASP.NET 1.0, ASP.NET 2.0和ASP.NET AJAX。 强大的客户端呈现技术:行业中最先进的Web用户界面技术。 深入整合ASP.NET AJAX:最理想的完全应用AJAX...

    ASP.NET程序中常用的三十三种代码.txt

    ASP.NET程序中常用的三十三种代码 1. 打开新的窗口并传送参数:  传送参数: response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")  接收参数: ...

    根据用户权限从数据库生成菜单

    根据来自数据库的用户权限动态生成菜单。

    C#编程经验技巧宝典

    111 <br>0185 如何在ASP.NET中用URL在页面之间传值 112 <br>0186 如何使用IsPostBack实现ASP.NET页面加载 112 <br>0187 如何利用输出缓存技术缓存ASP.NET页面 112 <br>0188 如何在ASP.NET中显示...

    安源新闻系统程序 v4.0

    首先保证你有支持asp.net的空间。把AYNews的文件全部上传到虚拟目录根目录(网站根目录)下,或传到非根目录下然后把bin目录移动到根目录。 管理员账号为admin密码为admin888:,请第一次登陆后修改 3.提示无法找到脚本...

    vc++ 开发实例源码包

    系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++...

Global site tag (gtag.js) - Google Analytics