[CLOSED] Menu items vanished - Razor view

  1. #1

    [CLOSED] Menu items vanished - Razor view

    Hi,
    I am facing one strange problem. which is in my viewport i am having panel with list of menus. When i am clicking outside surface of that menu item more than two or three times followed by click Right Arrow means all of my menu items are got vanished.

    Thanks in advance

    1. _ExtLayoutOther.cshtml
    @using Ext.Net.MVC
    <!DOCTYPE html>
    <html>
    <head>
        @Html.X().ResourcePlaceHolder(Ext.Net.ResourceMode.ScriptFiles)
        <script type="text/javascript" src="@Url.Content("~/scripts/json2.js")" ></script>
        <script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script>
        <script type="text/javascript" src="@Url.Content("~/Scripts/extTab.js")"></script>
        
         <script language="javascript" type="text/javascript">
             $(function () {
                 setTimeout(function () {
                     if ($("#unlicensed").size() > 0) {
                         $("#popaction").remove();
                         $("#unlicensed").remove();
                     }
                 }, 2000);
             });
        </script>
    </head>
    <body>
        <div>
            @Html.X().ResourceManager()
            @RenderBody()        
        </div>
    </body>
    </html>
    2. ViewPortController.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace Ext.Net_Explore_2._0.Controllers
    {
        public class ViewPortController : Controller
        {
            //
            // GET: /ViewPort/
    
            public ActionResult Index()
            {
                return View();
            }
    
        }
    }
    3. Index.cshtml
    @using Ext.Net.MVC
    @using Ext.Net_Explore_2._0.Component.Ext
    @{
        Layout = "~/Views/Shared/_ExtLayoutOther.cshtml";
        List<Ext.Net.MenuPanel> _listMenuPanel = Html.AllMenuPanel();
    }
    @(
     Html.X().Viewport()
         .Layout("border")
         .Items(viewportitems =>
         {
             viewportitems.Add(
                  Html.X().Panel()
                            .ID("westPanel")
                            .Region(Ext.Net.Region.West)
                            .CollapseMode(Ext.Net.CollapseMode.Mini)
                            .Split(true)
                            .Width(225)
                            .Title("Navigation Pane")
                            .Margins("0 0 4 4")
                            .Collapsible(true)
                            .Layout(Ext.Net.LayoutType.Accordion)
                            .Items(westPanelitems =>
                            {
                                // Dynamic Menu
    
                                foreach (var menupanelitem in _listMenuPanel)
                                {
                                    westPanelitems.Add(menupanelitem);
                                }
    
                            })
                 );
    
             viewportitems.Add(
                 Html.X().Panel()
                 .Title("Center")
                 .Region(Ext.Net.Region.Center)
                 .Margins("0 0 4 0")
                 .Html("North")
                 );
         })
    )
    4. ExtControlsHelper
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using Ext.Net;
    using System.Web.Routing;
    using System.Xml.Linq;
    
    namespace Ext.Net_Explore_2._0.Component.Ext
    {
        public class ExtControlsHelper
        {
            public static string GetAbsoluteURL(string controllername, string actionname)
            {
                return RouteTable.Routes.GetVirtualPath(((MvcHandler)System.Web.HttpContext.Current.CurrentHandler).RequestContext,
                new RouteValueDictionary(new { controller = controllername, action = actionname })).VirtualPath;
            }
            private static Icon SetMenuIcon(string icon)
            {
                Icon outIcon = Icon.Group;
                Enum.TryParse<Icon>(icon, out outIcon);
                return outIcon;
            }
            public static List<MenuInfo> ParseMenu()
            {
                List<MenuInfo> info = new List<MenuInfo> { };
    
                XElement document = XElement.Load(System.Web.HttpContext.Current.Server.MapPath("~/app_data/MenuData.xml"));
    
    
                foreach (var item in document.Elements("MenuInfo"))
                {
                    MenuInfo minfo = new MenuInfo
                    {
                        MenuPanelId = item.Attribute("MenuPanelId").Value,
                        MenuTitle = item.Attribute("MenuTitle").Value
                    };
    
                    if (!string.IsNullOrEmpty(item.Attribute("MenuIcon").Value))
                    {
                        minfo.MenuIcon = SetMenuIcon(item.Attribute("MenuIcon").Value);
                    }
    
                    foreach (var infoitem in item.Elements("MenuInfoItem"))
                    {
                        MenuInfoItem minfoItem = new MenuInfoItem
                        {
                            MenuPanelId = infoitem.Attribute("MenuPanelId").Value,
                            MenuTitle = infoitem.Attribute("MenuTitle").Value
                        };
    
                        if (!string.IsNullOrEmpty(infoitem.Attribute("MenuIcon").Value))
                        {
                            minfoItem.MenuIcon = SetMenuIcon(infoitem.Attribute("MenuIcon").Value);
                        }
    
                        foreach (var c in infoitem.Elements("Configs"))
                        {
                            Config cfg = new Config
                            {
                                Name = c.Attribute("Name").Value,
                                Value = c.Attribute("Value").Value
                            };
                            minfoItem.Configs.Add(cfg);
                        }
    
                        minfo.MenuInfoItems.Add(minfoItem);
                    }
    
                    if (minfo.MenuInfoItems.Count() > 0)
                    {
                        info.Add(minfo);
                    }
                }
    
                return info;
            }
    
            public static string SetRoughValue(string input)
            {
                if (input.IndexOf(",") == -1)
                {
                    return input;
                }
                else
                {
                    return ("/" + input.Split(',')[0] + "/" + input.Split(',')[1]);
                }
            }
    
            public static string SetValue(string input)
            {
                if (input.IndexOf(",") == -1)
                {
                    return input;
                }
                else
                {
                    return ExtControlsHelper.GetAbsoluteURL(input.Split(',')[0], input.Split(',')[1]);
                }
            }
        }
    
        public class MenuInfo : ItemInfo
        {
            public MenuInfo()
            {
                MenuInfoItems = new List<MenuInfoItem>();
            }
    
            public List<MenuInfoItem> MenuInfoItems { get; set; }
        }
    
        public class ItemInfo
        {
            public string MenuPanelId { get; set; }
            public string MenuTitle { get; set; }
            public Icon MenuIcon { get; set; }
        }
    
        public class MenuInfoItem : ItemInfo
        {
            public MenuInfoItem()
            {
                Configs = new List<Config>();
            }
    
            public List<Config> Configs { get; set; }
        }
    
        public class Config
        {
            public string Name { get; set; }
            public string Value { get; set; }
        }
    }
    5. ExtControlsBuilder.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using Ext.Net;
    
    using System.Web.Routing;
    using System.Xml.Linq;
    
    namespace Ext.Net_Explore_2._0.Component.Ext
    {
        public static class ExtControlsBuilder
        {
            public static List<MenuPanel> AllMenuPanel(this HtmlHelper htmlhelper)
            {
                List<MenuInfo> info = ExtControlsHelper.ParseMenu();
    
                List<MenuPanel> _listMenuPanel = new List<MenuPanel>();
                foreach (var menu in info)
                {
                    MenuPanel menuPanel = new MenuPanel();
                    menuPanel.ID = menu.MenuPanelId;
                    menuPanel.Title = menu.MenuTitle;
                    menuPanel.Icon = menu.MenuIcon;
    
                    foreach (var mitem in menu.MenuInfoItems)
                    {
                        MenuItem menuItem = new MenuItem();
    
                        menuItem.ID = mitem.MenuPanelId;
                        menuItem.Text = mitem.MenuTitle;
                        menuItem.Icon = mitem.MenuIcon;
    
                        foreach (var item in mitem.Configs)
                        {
                            menuItem.CustomConfig.Add(new ConfigItem() { Name = item.Name, Value = ExtControlsHelper.SetValue(item.Value), Mode = ParameterMode.Value });
                        }
    
                        menuPanel.Menu.Add(menuItem);
                    }
    
                    _listMenuPanel.Add(menuPanel);
                }
    
                return _listMenuPanel;
            }
        }
    }
    6. MenuData.xml
    <?xml version="1.0" encoding="utf-8" ?>
    <Menu>
    
      <!--Users-->
    
      <MenuInfo MenuPanelId="usersmenu" MenuTitle="Users" MenuIcon="Group">
        <MenuInfoItem MenuPanelId="mnuUserSearch" MenuTitle="User Search" MenuIcon="UserMagnify">
          <Configs Name="url" Value="Home,ExtUserSearch"/>
          <!--<Configs Name="url" Value="Home,UserSearch"/>-->
          <Configs Name="menuelementid" Value="usersearch"/>
          <Configs Name="content" Value=""/>
        </MenuInfoItem>
        <MenuInfoItem MenuPanelId="mnuMerrillAgent" MenuTitle="Create Merrill Agent" MenuIcon="UserHome">
          <Configs Name="url" Value="MerrillAgent,Maintenance"/>
          <Configs Name="menuelementid" Value="addeditMerrillAgent"/>
          <Configs Name="content" Value="content"/>
        </MenuInfoItem>
        <MenuInfoItem MenuPanelId="mnuContact" MenuTitle="Create Contact" MenuIcon="UserSuitBlack">
          <Configs Name="url" Value="Contact,Maintenance"/>
          <Configs Name="menuelementid" Value="addeditContact"/>
          <Configs Name="content" Value="content"/>
        </MenuInfoItem>
        <MenuInfoItem MenuPanelId="mnuSupplier" MenuTitle="Create Supplier" MenuIcon="UserEdit">
          <Configs Name="url" Value="Supplier,Maintenance"/>
          <Configs Name="menuelementid" Value="addeditSupplier"/>
          <Configs Name="content" Value="content"/>
        </MenuInfoItem>
      </MenuInfo>
    
      <!--Account-->
    
      <MenuInfo MenuPanelId="accountmenu" MenuTitle="Account" MenuIcon="Building">
        <MenuInfoItem MenuPanelId="mnuAccountSearch" MenuTitle="Account Search" MenuIcon="Magnifier">
          <Configs Name="url" Value="Account,ExtAccountSearch"/>
          <!--<Configs Name="url" Value="Account,Index"/>-->
          <Configs Name="menuelementid" Value="accountSearch"/>
          <Configs Name="content" Value=""/>
        </MenuInfoItem>
        <MenuInfoItem MenuPanelId="mnuAccount" MenuTitle="Create Account" MenuIcon="BuildingAdd">
          <Configs Name="url" Value="Account,Maintenance"/>
          <Configs Name="menuelementid" Value="addeditaccount"/>
          <Configs Name="content" Value="content"/>
        </MenuInfoItem>
      </MenuInfo>
    
      <!--Job-->
    
      <MenuInfo MenuPanelId="jobmenu" MenuTitle="Job" MenuIcon="PageWhiteMagnify">
        <MenuInfoItem MenuPanelId="mnuJobSearch" MenuTitle="Job Search" MenuIcon="PageWhiteMagnify">
          <!--<Configs Name="url" Value="Job,Index"/>-->
          <Configs Name="url" Value="Job,ExtJobSearch"/>
          <Configs Name="menuelementid" Value="jobSearch"/>
          <Configs Name="content" Value=""/>
        </MenuInfoItem>
        <MenuInfoItem MenuPanelId="mnuJob" MenuTitle="New Job" MenuIcon="PageWhiteAdd">
          <Configs Name="url" Value="Job,Maintenance"/>
          <Configs Name="menuelementid" Value="addeditjob"/>
          <Configs Name="content" Value="content"/>
        </MenuInfoItem>
        <MenuInfoItem MenuPanelId="mnuExhibit" MenuTitle="Exhibit Packing Slip" MenuIcon="Vcard">
          <Configs Name="url" Value="Job,ExhibitTrackingBlankSlip"/>
          <Configs Name="menuelementid" Value="addeditexhibit"/>
          <Configs Name="content" Value="content"/>
        </MenuInfoItem>
      </MenuInfo>
    
      <!--Rate-->
    
      <MenuInfo MenuPanelId="ratemenu" MenuTitle="Rate" MenuIcon="MoneyDollar">
        <MenuInfoItem MenuPanelId="panelmanagetemplate" MenuTitle="Manage Template" MenuIcon="TagBlueAdd">
          <Configs Name="url" Value="RateAndBilling,ManageTemplate"/>
          <Configs Name="menuelementid" Value="managetemplate"/>
          <Configs Name="content" Value=""/>
        </MenuInfoItem>
        <MenuInfoItem MenuPanelId="rateJob" MenuTitle="Rate Editor" MenuIcon="TagBlueEdit">
          <Configs Name="url" Value="RateAndBilling,RateAndPricing"/>
          <Configs Name="menuelementid" Value="addeditrateeditor"/>
          <Configs Name="content" Value=""/>
        </MenuInfoItem>
      </MenuInfo>
    
      <!--Case-->
    
      <MenuInfo MenuPanelId="casemenu" MenuTitle="Case" MenuIcon="Folder">
        <MenuInfoItem MenuPanelId="mnuCaseSearch" MenuTitle="Case Search" MenuIcon="FolderMagnify">
          <!--<Configs Name="url" Value="Case,Index"/>-->
          <Configs Name="url" Value="Case,ExtCaseSearch"/>
          <Configs Name="menuelementid" Value="caseSearch"/>
          <Configs Name="content" Value=""/>
        </MenuInfoItem>
        <MenuInfoItem MenuPanelId="mnuCase" MenuTitle="New Case" MenuIcon="FolderAdd">
          <Configs Name="url" Value="Case,Maintenance"/>
          <Configs Name="menuelementid" Value="addeditcase"/>
          <Configs Name="content" Value="content"/>
        </MenuInfoItem>
      </MenuInfo>
    
      <!-- Merrill Group -->
    
      <MenuInfo MenuPanelId="merrillcasemenu" MenuTitle="Merrill Group" MenuIcon="Folder">
        <MenuInfoItem MenuPanelId="mnuMerrillCaseSearch" MenuTitle="Manage Merrill Group" MenuIcon="FolderMagnify">
          <Configs Name="url" Value="MerrillCase,ExtMerrillCaseSearch"/>
          <Configs Name="menuelementid" Value="merrillcaseSearch"/>
          <Configs Name="content" Value=""/>
        </MenuInfoItem>
        <MenuInfoItem MenuPanelId="mnuMerrillCase" MenuTitle="New Merrill Group" MenuIcon="FolderAdd">
          <Configs Name="url" Value="MerrillCase,Maintenance"/>
          <Configs Name="menuelementid" Value="addeditmerrillcase"/>
          <Configs Name="content" Value="content"/>
        </MenuInfoItem>
      </MenuInfo>
    
      <!--Role-->
    
      <MenuInfo MenuPanelId="rolemenu" MenuTitle="Role" MenuIcon="UserKey">
        <MenuInfoItem MenuPanelId="mnuManagerole" MenuTitle="Manage Role" MenuIcon="UserKey">
          <Configs Name="url" Value="Role,Index"/>
          <Configs Name="menuelementid" Value="managerole"/>
          <Configs Name="content" Value="content"/>
        </MenuInfoItem>
      </MenuInfo>
    </Menu>
    Attached Thumbnails Click image for larger version. 

Name:	MenuafterVanish.jpg 
Views:	74 
Size:	83.5 KB 
ID:	4945   Click image for larger version. 

Name:	MenubeforeVanish.jpg 
Views:	88 
Size:	90.8 KB 
ID:	4946  
    Last edited by Daniil; Oct 24, 2012 at 3:31 PM. Reason: [CLOSED]
  2. #2
    Hi @MTSI,

    1. Is the Layout required to reproduce the issue?

    I was able to run the code removing
    Layout = "~/Views/Shared/_ExtLayoutOther.cshtml";
    and adding
    @Html.X().ResourceManager()
    in Index.cshtml page.

    Please always simplify code samples as much as you can.

    2. I was unable to reproduce the issue. Though the steps to reproduce are not clear for me.

    When i am clicking outside surface of that menu item more than two or three times followed by click Right Arrow
    I am not sure about "outside surface of that menu item". Should I just click anywhere outside the menu?

    Also what "Right Arrow" do you mean?

    Please clarify the steps.

    3. Also please clarify is the issue reproducible with the latest sources from the 2.1 branch? Is it reproducible in all major browsers or specific to some browser?
  3. #3
    Hi,

    please see my comments below.


    1. Is the Layout required to reproduce the issue?

    [MTSI] There is no difference both are produce the same issue.

    When i am clicking outside surface of that menu item more than two or three times followed by click Right Arrow
    [MTSI] Instead of clicking the menu item click outside with in the menu panel two or three times. You will get JavaScript error. After click Left arrow in Keyboard. please refer my screenshots. The first one having menus after following above mentioned steps menu items got vanished.

    3. Also please clarify is the issue reproducible with the latest sources from the 2.1 branch? Is it reproducible in all major browsers or specific to some browser?

    [MTSI] I am using 2.0.4449.39235 version Ext.Net.dll only. I am not sure about 2.1 Version
    This issue exist in IE (6,7,8,9), Firefox and chrome browsers. ( Other browsers I am not verified)

    Thanks in advance.
  4. #4
    Thank for the details.

    Quote Originally Posted by MTSI View Post
    [MTSI] I am using 2.0.4449.39235 version Ext.Net.dll only. I am not sure about 2.1 Version
    We would highly recommend to update to v2.1.
    http://svn.ext.net/premium/branches/2.1/

    There are many improvements and bug-fixes comparing with v2.0.

    Is the issue reproducible with v2.1?

Similar Threads

  1. [CLOSED] Dynamic menu row command in Grid view - Razor
    By MTSI in forum 2.x Legacy Premium Help
    Replies: 1
    Last Post: Oct 04, 2012, 12:37 PM
  2. Replies: 0
    Last Post: Aug 09, 2012, 5:37 AM
  3. Replies: 4
    Last Post: Apr 09, 2012, 2:10 PM
  4. Replies: 2
    Last Post: Apr 02, 2012, 7:48 AM
  5. [CLOSED] [1.0] MVC sample west menu has no menu items
    By Inoventus in forum 1.x Legacy Premium Help
    Replies: 9
    Last Post: Nov 24, 2009, 4:06 AM

Posting Permissions