"> آموزش و سورس نمایش منو از بانک اطلاعاتی SQL Sever درASP.NET

آموزش و سورس نمایش منو از بانک اطلاعاتی SQL Sever درASP.NET

نمایش منو از بانک اطلاعاتی

ساخت منو های داینامیک در پروژه میتواند بسیار به انعطاف پذیری در پروژه کمک کند و کیفیت کار را دوچندان ، البته ساخت منو که در این آموزش داریم به صورت دستی است و باید آدرس ها را در فیلد دیتابیس به صورت دستی پر کنیم و یا اینکه بعد از ساختن صفحه آن را مستقیما به دیتابیس بفرستیم در روش بعدی که در مقاله بعدی آماده خواهم کرد کار با ID دسته ها و زیر گروه هاست به هر حال هر دو این آموزش ها در قسمتهایی از پروژه میتواند مفید واقع شود آموزش را در محیط ASP.NET و زبان #C دنبال میکنیم و مراحل را بخش به بخش جلو میبریم همراه ما در ادامه باشید.

ساخت دیتابیس :

ابتدا یک دیتابیس ساخته و اسکریپت زیر را که براتون قرار میدم را در آن اجرا کنید تا جدول مورد نظر ما ساخته شود ! برای اجرای کوئری دیتابیس ابتدا دیتابیس را بسازید و روی گزینه New Query کلیک کنید کد ها را قرار بدید و روی گزینه run کلیک کنید.


    CREATE TABLE [dbo].[tbl_Menu](  
        [Menu_ID] [int] IDENTITY(1,1) NOT NULL,  
        [Menu_ParentID] [int] NULL,  
        [Menu_Name] [varchar](50) NULL,  
        [Menu_Page_URL] [varchar](500) NULL,  
     CONSTRAINT [PK_tbl_Menu] PRIMARY KEY CLUSTERED   
    (  
        [Menu_ID] ASC  
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]  
    ) ON [PRIMARY]  
      
    GO  

 

 

 

تصاویر زیر گویای توضیحات فوق میباشد.

یک پروژه Web Application در ویژوال استدیو ایجاد کنید البته در محیط ASP.NET یک Master Page بسازید و کد های زیر را در آن قرار بدید !


    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="MasterPage.master.cs" Inherits="MenuFromDB.MasterPage" %>  
      
    <!DOCTYPE html>  
      
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head runat="server">  
        <title></title>  
        <link href="StyleSheetMenu.css" rel="stylesheet" />  
        <link href="StyleSheet.css" rel="stylesheet" />  
        <asp:ContentPlaceHolder ID="head" runat="server">  
        </asp:ContentPlaceHolder>  
    </head>  
    <body>  
        <form id="form1" runat="server">  
            <div>  
                <table cellpadding="1" cellspacing="1" width="880px" align="center" class="BlueBorder"  
                       style="background: White;">  
                    <tr>  
                        <td style="height: 100px; background-color: skyblue; padding-left: 10px;">  
                            <span style="font-size: 20pt; font-weight: bold; color: blue;">Data Base Driven Menu Item In ASP.NET C#</span>  
                        </td>  
                    </tr>  
                    <tr>  
                        <td style="background-color: orange; padding-left: 1px;">  
                            <asp:Menu ID="MenuFromDB" runat="server" Orientation="Horizontal">  
                                <levelmenuitemstyles>  
                                    <asp:menuitemstyle cssclass="Parent_Menu" />  
                                    <asp:menuitemstyle cssclass="level_menu" />  
                                </levelmenuitemstyles>  
                                <staticselectedstyle cssclass="selected" />  
                            </asp:Menu>  
                        </td>  
                    </tr>  
                    <tr>  
                        <td style="padding-top: 40px; padding-bottom: 80px; padding-left: 10px">  
                            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">  
                            </asp:ContentPlaceHolder>  
                        </td>  
                    </tr>  
                </table>  
      
            </div>  
        </form>  
    </body>  
    </html>  

 

 

حال به بخش کد master page رفته و کد های سی شارپ آن را قرار بدید !


    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Web;  
    using System.Web.UI;  
    using System.Web.UI.WebControls;  
    using System.IO;  
    using System.Data;  
    using System.Data.SqlClient;  
    using System.Configuration;  
      
    namespace MenuFromDB  
    {  
        public partial class MasterPage : System.Web.UI.MasterPage  
        {  
            SqlDataAdapter da;  
            DataSet ds = new DataSet();  
            DataTable dt = new DataTable();  
      
            protected void Page_Load(object sender, EventArgs e)  
            {  
                if (!Page.IsPostBack)  
                {  
                    dt = GetMenuDataFromDB(0);  
                    PopulateMenu(dt, 0, null);  
                }  
            }  
      
            public DataTable GetMenuDataFromDB(int MenuParentID)  
            {  
                SqlConnection con = new SqlConnection();  
                ds = new DataSet();  
                con.ConnectionString = @"Data Source=MyPC\SqlServer2k8; Initial Catalog=Test; Integrated Security=true;";  
                SqlCommand cmd = new SqlCommand("SELECT *  FROM tbl_Menu WHERE Menu_ParentID='" + MenuParentID + "'", con);  
      
                da = new SqlDataAdapter(cmd);  
                da.Fill(ds);  
                con.Open();  
                cmd.ExecuteNonQuery();  
                con.Close();  
      
                return ds.Tables[0];  
            }  
      
            private void PopulateMenu(DataTable dt, int Menu_Parent_ID, MenuItem Parent_MenuItem)  
            {  
                string currentPage = Path.GetFileName(Request.Url.AbsolutePath);  
                foreach (DataRow row in dt.Rows)  
                {  
                    MenuItem menuItem = new MenuItem  
                    {  
                        Value = row["Menu_Id"].ToString(),  
                        Text = row["Menu_Name"].ToString(),  
                        NavigateUrl = row["Menu_Page_URL"].ToString(),  
                        Selected = row["Menu_Page_URL"].ToString().EndsWith(currentPage, StringComparison.CurrentCultureIgnoreCase)  
                    };  
                    if (Menu_Parent_ID == 0)  
                    {  
                        MenuFromDB.Items.Add(menuItem);  
                        DataTable dtChildMenu = new DataTable();  
                        dtChildMenu = this.GetMenuDataFromDB(int.Parse(menuItem.Value));  
                        PopulateMenu(dtChildMenu, int.Parse(menuItem.Value), menuItem);  
                    }  
                    else  
                    {  
                        Parent_MenuItem.ChildItems.Add(menuItem);  
                    }  
                }  
            }  
        }  
    }  

 

به همین راحتی تونستیم این امکان را برای پروژه خود فراهم کنیم نمونه سورس نیز ضمیمه شد.موفق باشید 🙂

 

محبوبه میرزائی

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

    علی پاسخ

    ساخت کوئری بانک این خطا رو میده
    The CREATE TABLE SQL construct or statement is not supported.

    دات نت express 2010 دارم

      مسعود شریفی پاسخ

      روی SQL Server Manegment اجرا بگیرید !

    فاطمه پاسخ

    سلام من پروژه شمارو دانلود کردم اجرا کردم
    قسمت
    da.Fill(ds);
    ایراد میگیره
    An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code

    Additional information: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL

      مسعود شریفی پاسخ

      ابتدا یک دیتابیس ساخته و اسکریپت زیر را که براتون قرار میدم را در آن اجرا کنید
      دیتابیس را ساختتید ؟

کدیشن ! مارکت پروژه های برنامه نویسی راه اندازی شدیه توکه پا بریم ببینم