110,533
社区成员
发帖
与我相关
我的任务
分享
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%-- 页面添加一个菜单控件 --%>
<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal">
</asp:Menu>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TestDAL;
using System.Data;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//判断是否是第一次请求页面
if (!IsPostBack)
{
BindMenu(Menu1, null, "0");
}
}
/// <summary>
/// 绑定菜单(递归方法)
/// </summary>
/// <param name="mn">要绑定的菜单</param>
/// <param name="menu">菜单项</param>
/// <param name="mainMenu">菜单层级</param>
static void BindMenu(Menu mn , MenuItem menu , string mainMenu)
{
MenuItem mitem = null;
//获取所有的菜单列表
DataSet ds = TestService.GetMenus();
DataTable dt = ds.Tables[0];
//筛选 父级菜单为指定菜单级别的集合
DataRow[] drows = dt.Select("MenuPid='" + mainMenu + "'");
foreach (DataRow dr in drows)
{
mitem = new MenuItem();
mitem.Text = dr["MenuName"].ToString();
mitem.Value = dr["MenuId"].ToString();
//当菜单项为空时 表示为顶级菜单
if (menu == null)
{
//故添加至菜单
mn.Items.Add(mitem);
}
else //若不是 则为子菜单项
{
//添加至上级菜单的子项集合中
menu.ChildItems.Add(mitem);
}
//筛选 父级菜单为当前菜单项时
DataRow[] drs = dt.Select("MenuPid='" + mitem.Value + "'");
mainMenu = mitem.Value;
BindMenu(mn, mitem, mainMenu);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace TestDAL
{
/// <summary>
/// Author:Echo
/// Time:2012/11/22 22:53:08
/// CLRVersion:4.0.30319.296
/// GUID:6f05e5cc-99ff-4dcc-907a-ca39815fc7dc
/// </summary>
public class TestService
{
/// <summary>
/// 获取所有的菜单项
/// </summary>
/// 表结构
/// ---------------------
/// MenuId Int
/// MenuName Nvarchar(50)
/// MenuPid Int
/// ---------------------
/// <returns></returns>
public static DataSet GetMenus()
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
using (SqlConnection con = DBHelper.Connection)
{
string sql = "SELECT * FROM Test";
SqlCommand cmd = new SqlCommand(sql, con);
da.SelectCommand = cmd;
try
{
da.Fill(ds, "menus");
return ds;
}
catch (Exception ex)
{
throw ex;
}
}
}
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%--这里需要添加一个下拉菜单的控件--%>
<asp:DropDownList ID="ddlTest" runat="server">
</asp:DropDownList>
<%-- 这是生成页面的源码
<select name="ddlTest" id="ddlTest">
<option value="0">选择项一</option>
<option value="1">选择项二</option>
<option value="2">选择项三</option>
--%>
</div>
</form>
</body>
</html>
Default.aspx.cs(也就是所说的后台代码)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//判断是否是第一次请求页面
if (!IsPostBack)
{
BindDate();
}
}
//绑定数据
void BindDate()
{
//初始化测试数据
//当然 这里的数据一般来说都是从数据库读取 然后通过封装后获取的
List<Selection> list = new List<Selection>();
list.Add(new Selection("选择项一", 0));
list.Add(new Selection("选择项二", 1));
list.Add(new Selection("选择项三", 2));
//设置下拉菜单的数据源
this.ddlTest.DataSource = list;
//设置下拉菜单的显示内容的数据源字段
this.ddlTest.DataTextField = "Name";
//设置下拉菜单的值的数据源字段
this.ddlTest.DataValueField = "Value";
//绑定数据源
this.ddlTest.DataBind();
}
/// <summary>
/// 选择项类
/// </summary>
public class Selection
{
//显示的选项名称
public string Name { get; set; }
//选项值
public int Value { get; set; }
//默认构造
public Selection()
{
}
//扩展构造
public Selection(string name, int value)
{
this.Name = name;
this.Value = value;
}
}
}