آموزش ساخت منو و زیرمنو توسط جداول بانک اطلاعاتی
دوشنبه 8 تیر 1394منو و زیرمنوها قسمت مهمی از هر برنامه می باشد. راه های زیادی برای ساخت آنها در برنامه وجود دارد. همچنین ما برای دسترسی آسان به هر صفحه از طریق منو و زیر منو از مسیر ناوبری استفاده می کنیم.
منو و زیر منوها به طور معمول با hyperlink و یا link button ساخته می شوند. با این حال ما در این مقاله نحوه ساخت منو و زیرمنو توسط جداول بانک اطلاعاتی نمایش می دهیم.
ابتدا یک بانک اطلاعاتی با نام MenuSubmenuDB ساخته و یک جدول در آن با نام MenuSubmenu ایجاد نمایید.
create table MenuSubmenu
(
Menu_id int identity(1,1) primary key,
Submenu_id int,
Menu varchar(30),
MenuUrl nvarchar(500)
)
سپس یک procedure با کد زیر بسازید.
Create procedure sp_Menu @Submenu_id int as begin select Menu_id,Submenu_id,Menu,MenuUrl from MenuSubmenu where Submenu_id=@Submenu_id End
رکوردهای منو و زیرمنو را مانند شکل زیر درون جدول درج می نماییم.

شما در این جدول فیلدهای table Menu_id ، submenu_id ، Menu name ، Menu URL را می بینید. در پایین صفحه 1 و صفحه 2 ، زیر صفحه 1 و زیر صفحه 2 که صفحه های فرزند هستند وجود دارند.
کسانی که وقت کافی برای ساخت بانک و جداول ندارند می توانند فایل نصبی موجود در پوشه ضمیمه را نصب کنند سپس از این قسمت شروع به ساخت پروژه نمایند.
یک پروژه ایجاد کرده و یک فرم با نام webform1 به آن اضافه نمایید.
کدهای زیر را در صفحه webform1.aspx کپی نمایید.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MenuSubmenuEX.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<a href="http://www.barnamenevisan.org"> <h1>مرجع تخصصی برنامه نویسان</h1></a>
<h1>نمونه منو و زیرمنو</h1>
<asp:Menu ID="HMenu" runat="server" Orientation="Horizontal" >
<StaticSelectedStyle />
<LevelMenuItemStyles>
<asp:MenuItemStyle />
</LevelMenuItemStyles>
</asp:Menu>
</div>
</form>
</body>
</html>
پس از تنظیم کردن رشته اتصال مانند زیر :
<connectionStrings>
<add name="connstr" connectionString="Data Source=.;Initial Catalog=نام بانک اطلاعاتی;User ID=نام کاربری کامپیوتر;Password=رمزعبور"
providerName="System.Data.SqlClient" />
</connectionStrings>
حال کدهای زیر را در صفحه webform1.aspx.cs کپی نمایید.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;
namespace MenuSubmenuEX
{
public partial class WebForm1 : System.Web.UI.Page
{
string constr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = GetMenu(0);
FillMenu(dt, 0, null);
}
}
private DataTable GetMenu(int Submenu_id)
{
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("sp_Menu", con))
{
SqlDataAdapter sd = new SqlDataAdapter();
DataTable dtMenu = new DataTable();
cmd.Parameters.AddWithValue("@Submenu_id", Submenu_id);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
sd.SelectCommand = cmd;
sd.Fill(dtMenu);
return dtMenu;
}
}
}
private void FillMenu(DataTable dt, int Submenu_id, MenuItem MenuItem)
{
string Page = Path.GetFileName(Request.Url.AbsolutePath);
foreach (DataRow row in dt.Rows)
{
MenuItem Menu = new MenuItem
{
Value = row["Menu_id"].ToString(),
Text = row["Menu"].ToString(),
NavigateUrl = row["MenuUrl"].ToString(),
Selected = row["MenuUrl"].ToString().EndsWith(Page, StringComparison.CurrentCultureIgnoreCase)
};
if (Submenu_id == 0)
{
HMenu.Items.Add(Menu);
DataTable dtSubmenu = this.GetMenu(int.Parse(Menu.Value));
FillMenu(dtSubmenu, int.Parse(Menu.Value), Menu);
}
else
{
MenuItem.ChildItems.Add(Menu);
}
}
}
}
}
- ASP.net
- 3k بازدید
- 8 تشکر