Summary
Keywords
Full Transcript
Link for all dot net and sql server video tutorial playlists https://www.youtube.com/user/kudvenkat/playlists?sort=dd&view=1 Link for slides, code samples and text version of the video http://csharp-video-tutorials.blogspot.com/2015/07/jquery-dynamic-menu-from-database-in.html Healthy diet is very important both for the body and mind. If you like Aarvi Kitchen recipes, please support by sharing, subscribing and liking our YouTube channel. Hope you can help. https://www.youtube.com/channel/UC7sEwIXM_YfAMyonQCrGfWA/?sub_confirmation=1 In this video we will discuss, how to build a jQuery menu using data from a database table. Menu.cs class using System.Collections.Generic; namespace Demo { public class Menu { public int Id { get; set; } public string MenuText { get; set; } public int? ParentId { get; set; } public bool Active { get; set; } public List<Menu> List { get; set; } } } MenuHandler.ashx using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.Script.Serialization; namespace Demo { public class MenuHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString; List<Menu> listMenu = new List<Menu>(); using (SqlConnection con = new SqlConnection(cs)) { SqlCommand cmd = new SqlCommand("spGetMenuData", con); cmd.CommandType = CommandType.StoredProcedure; con.Open(); SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { Menu menu = new Menu(); menu.Id = Convert.ToInt32(rdr["Id"]); menu.MenuText = rdr["MenuText"].ToString(); menu.ParentId = rdr["ParentId"] != DBNull.Value ? Convert.ToInt32(rdr["ParentId"]) : (int?)null; menu.Active = Convert.ToBoolean(rdr["Active"]); listMenu.Add(menu); } } List<Menu> menuTree = GetMenuTree(listMenu, null); JavaScriptSerializer js = new JavaScriptSerializer(); context.Response.Write(js.Serialize(menuTree)); } public List<Menu> GetMenuTree(List<Menu> list, int? parent) { return list.Where(x => x.ParentId == parent).Select(x => new Menu { Id = x.Id, MenuText = x.MenuText, ParentId = x.ParentId, Active = x.Active, List = GetMenuTree(list, x.Id) }).ToList(); } public bool IsReusable { get { return false; } } } } HTML & jQuery code <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Demo.WebForm1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="jquery-1.11.2.js"></script> <script src="jquery-ui.js"></script> <link href="jquery-ui.css" rel="stylesheet" /> <script type="text/javascript"> $(document).ready(function () { $.ajax({ url: 'MenuHandler.ashx', method: 'get', dataType: 'json', success: function (data) { buildMenu($('#menu'), data); $('#menu').menu(); }, error: function (err) { alert(err.statusText); } }); function buildMenu(parent, items) { $.each(items, function () { var li = $("<li>" + this.MenuText + "</li>"); if (!this.Active) { li.addClass('ui-state-disabled'); } li.appendTo(parent); if (this.List && this.List.length > 0) { var ul = $("<ul></ul>"); ul.appendTo(li); buildMenu(ul, this.List); } }); } }); </script> </head> <body style="font-family: Arial"> <form id="form1" runat="server"> <div style="width: 150px"> <ul id="menu"> </ul> </div> </form> </body> </html>
