آموزش ساخت منو و زیرمنو توسط جداول بانک اطلاعاتی
دوشنبه 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 تشکر