آموزش ساخت منو و زیرمنو توسط جداول بانک اطلاعاتی

دوشنبه 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);
                }
            }
        }
    }
}


 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید