How To Create Database Driven Menu in ASP.NET (C#)

This Post will show you how to binding a Menu Control to SQL Server database using C#. By this sample, you can create a database driven menu in ASP.Net.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DynamiCMenu.aspx.cs" Inherits="DynamiCMenu" %>  

<!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>Untitled Page</title>  
</head>  
<body>  
  <form id="form1" runat="server">  
      <div>  
          <asp:Menu ID="Menu1" Orientation="Horizontal" runat="Server">  
              <StaticMenuStyle  
              BackColor="#eeeeee"  
              BorderStyle="solid"  
              BorderColor="Black"  
              BorderWidth="1" />  
              <DynamicMenuStyle  
              BackColor="#eeeeee"  
              BorderStyle="solid"  
              BorderColor="Black"  
              BorderWidth="1"/>  
          </asp:Menu>  
      </div>  
  </form>  
</body>  
</html>  
using System;  
using System.Data;  
using System.Configuration;  
using System.Collections;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Web.UI.HtmlControls;  

public partial class DynamiCMenu : System.Web.UI.Page  
{  
  protected void Page_Load(object sender, EventArgs e)  
  {  
      if (!IsPostBack)  
          PopulateMenu();  

  }  
  public void PopulateMenu()  
  {  
      DataSet dst = CreateDS();  
      foreach (DataRow masterRow in dst.Tables["Company"].Rows)  
      {  
          MenuItem masterItem = new MenuItem((string)masterRow["CompanyName"]);  
          Menu1.Items.Add(masterItem);  
          foreach (DataRow childRow in masterRow.GetChildRows("ParentChild"))  
         {  
              MenuItem childItem = new MenuItem((string)childRow["Name"]);  
              masterItem.ChildItems.Add(childItem);  
          }  
      }  
  }  
  private DataSet CreateDS()  
  {  
      DataSet ds;  
      if (Session["DataList_ParentChild"] == null)  
      {  
          ds = new DataSet();  
          DataTable dt = new DataTable("Company");  
          DataRow dr;  
          dt.Columns.Add(new DataColumn("ID", typeof(Int32)));  
          dt.Columns.Add(new DataColumn("CompanyName", typeof(string)));  
          dt.Columns.Add(new DataColumn("Address", typeof(string)));  
          dt.Columns.Add(new DataColumn("Name", typeof(string)));  
          dt.Columns.Add(new DataColumn("Dept", typeof(string)));  
          for (int i = 1; i < 10; i++)  
          {  
              dr = dt.NewRow();  
              dr[0] = i;  
              dr[1] = "Company " + i;  
              dr[2] = "Address " + i;  
              dr[3] = "Manager name";  
              dr[4] = "Adminstration";  
              dt.Rows.Add(dr);  
          }  
          ds.Tables.Add(dt);  
          DataColumn[] Parent_PKColumns = new DataColumn[1];  
          Parent_PKColumns[0] = dt.Columns["ID"];  
          dt.PrimaryKey = Parent_PKColumns;  

          dt = new DataTable("Employees");  
          dt.Columns.Add(new DataColumn("ID", typeof(Int32)));  
          dt.Columns.Add(new DataColumn("CompanyID", typeof(Int32)));  
          dt.Columns.Add(new DataColumn("Name", typeof(string)));  
          dt.Columns.Add(new DataColumn("Dept", typeof(string)));  
          for (int i = 1; i < 10; i++)  
          {  
              int imax = 0;  
              if (i % 2 == 0) imax = 5;  
              else imax = 4;  
              for (int y = 2; y < imax; y++)    //3 emplyees for each company  
              {  
                  dr = dt.NewRow();  
                  dr[0] = y + i * 5;  
                  dr[1] = i;  
                  dr[2] = "Employee # " + dr[0];  
                  dr[3] = "Dept # " + (y + i);  
                  dt.Rows.Add(dr);  
              }  
          }  
          DataColumn[] Child_PKColumns = new DataColumn[1];  
          Child_PKColumns[0] = dt.Columns["ID"];  
          dt.PrimaryKey = Child_PKColumns;  
          ds.Tables.Add(dt);  
          DataColumn[] Child_FKColumns = new DataColumn[1];  
          Child_FKColumns[0] = dt.Columns["CompanyID"];  

          ds.Relations.Add("ParentChild", Parent_PKColumns, Child_FKColumns);  
          Session["DataList_ParentChild"] = ds;  
      }  
      else  
      {  
          ds = (DataSet)Session["DataList_ParentChild"];  
      }  
      return ds;  

  }  
}

Please do not post any spam link in the comment box😊

إرسال تعليق (0)
أحدث أقدم