none
How to retrieve share point list data to a top link menu bar as a drop down in share point foundation? RRS feed

  • Question

  • How to retrieve share point list data to a top link menu bar as a drop down ?

    For Example:

    I'm having share point list called "Employee details", it contains 3 columns called "Name", "Email","Department". I need to display all the Departments from the "Department" column to top link menu bar as a drop down. Like this.......

    Drop down Menu

    Note:

    I'm using Share Point Foundation 2010 and expecting to do this task using Java Script or CSS or CAML or Jquery etc.... except C# or VB.

    I'm new to share point, kindly give me a full code and full steps with details (Step by Step).

    Saturday, July 21, 2012 9:33 AM

Answers

  • Hello Darshan,

    You can use the Sharepoint object model rather then javascript or JQuery, to create a top link bar.

    because it is very easy using sharepoint object model.

    Here i will use the console application to create top navigation.

    So first open the visual studio and create a new console application as shown in image

    ( point 1,2 ).

    Now add the Sharepoint dll reference from 

    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI by right click on the solution and click on Add Reference

    As Shown in point 3 in image

    Select the Microsoft.SharePoint.dll from the  by go to browse section,

    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI location

    As Shown in point 4 in image

    then click ok and add below line of code in your Program.cs file

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.Navigation;
    
    namespace SampleConsole
    {
        class Program
        {
            static void Main(string[] args)
            {
                CreateTopNavigation();
            }
            public static void CreateTopNavigation()
            {
                using (SPSite site = new SPSite("http://win-fk2l3mm75a3:1111/"))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists["Employee details"];
                        foreach (SPListItem item in list.Items)
                        {
                            CreateTopNavigation(site, web, "Department", item.ParentList.DefaultViewUrl, Convert.ToString(item["Department"]), CreateItemViewUrl(web, item));
                        }
                    }
                }
            }
            public static string CreateItemViewUrl(SPWeb web,SPListItem item)        
            {
                string itemDisplayUrl = web.Url + item.ParentList.DefaultDisplayFormUrl +"?ID="+item.ID+"&Source="+web.Url+ item.ParentList.DefaultViewUrl+"&ContentTypeId="+item.ContentType.Id+"&IsDlg=1";
                    return itemDisplayUrl;
                
            }
            public static void CreateTopNavigation(SPSite site, SPWeb web, string header, string headerURL, string item, string url)
            {
    
                web.AllowUnsafeUpdates = true;
                SPNavigationNodeCollection topNavBar = web.Navigation.TopNavigationBar;
    
                //We are getting top navigation 
                SPNavigationNode nodeHeader = topNavBar.Cast<SPNavigationNode>().Where(n => n.Title == header).FirstOrDefault();
    
                //if header not found create it
                if (nodeHeader == null)
                    nodeHeader = topNavBar.AddAsFirst(new SPNavigationNode(header, headerURL, true));
                nodeHeader.Update();
    
                //try to get node item under header
                SPNavigationNode nodeItem = nodeHeader.Children.Cast<SPNavigationNode>().Where(n => n.Title == item).FirstOrDefault();
    
                //If item not found under heading then create it
                if (nodeItem == null)
                    nodeItem = nodeHeader.Children.AddAsLast(new SPNavigationNode(item, url, true));
                else
                    nodeItem.Url = url;
    
                nodeItem.Update();
                nodeHeader.Update();
    
            }
    
        }
    }
    


    Now replace the site url and list name according to your sharepoint site and list  inside below

    in my case my sharepoint site url is "http://win-fk2l3mm75a3:1111/" and list name is

    "Employee details"

    using (SPSite site = new SPSite("yoursite url"))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists["your list name"];
                 

    Now we are using the console application , so we need to do some extra settings in solution property , if u are creating the sharepoint solution then these settings are not required.

    so for that right click on the solution and go to the solution property as shown below

    As Shown in point 5 in image

    Now select the frame work version As Shown in point 6 in image

    Now select the platform 64 bit by go to the debug section as shown below image point 7

    Now save all the changes and run the console applicaion as shown in point 8

    Cheers....so once the application run successfully the top navigation link is added from the sharepoint list


    Hiren Patel | Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.

    Sunday, July 22, 2012 7:07 AM
  • If you want to redirect the user on the particular subsite then you need to also stored the subsite url along with the Department column inside the list.

    lets say u have created the new column "subsiteUrl" by go to the list settings - > click on Create columns link.

    give the specific name of the new column "subsiteUrl" and select the type as a single line of text and click ok.

     so when you inserted the data for the department along with that u also need to insert the value of newly created column.

    so the function CreateItemViewUrl in above code will change like as shown below

    public static string CreateItemViewUrl(SPWeb web,SPListItem item)        
            {
                string itemDisplayUrl = Convert.ToString(item["subsiteUrl"]);            
            }



    Hiren Patel | Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.


    Monday, July 23, 2012 8:10 AM
  • Hello Darshan,

    then for that you need to write the event receiver for the list item.

    you need to use above code inside the ItemUpdated event handler.

      public override void ItemUpdated(SPItemEventProperties properties)
           {
              //Use above code here with specific changes 
              base.ItemUpdated(properties);
           }

    so here we are getting the SPWeb object using properties.Web

    so in above console application CreateTopNavigation method will change and you need to call this method inside the ItemUpdated event receiver.

    public override void ItemUpdated(SPItemEventProperties properties)
    		{
    			base.ItemUpdated(properties);
    			CreateTopNavigation(properties.Web.Site, properties.Web);
    
    		}
    		public static void CreateTopNavigation(SPSite site, SPWeb web)
    		{
    			SPList list = web.Lists["Employee details"];
    			foreach (SPListItem item in list.Items)
    			{
    				CreateTopNavigation(site, web, "Department", item.ParentList.DefaultViewUrl, Convert.ToString(item["Department"]), CreateItemViewUrl(web, item));
    			}
    		}

    you can follow the below url to create the event receiver

    http://www.expertsupdates.com/sharepoint-articles/create-event-handler-for-sharepoint-list-31.aspx

    but here you need to select the An Item was updated receiver as shown below


    Hiren Patel | Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.


    Monday, July 23, 2012 9:29 AM
  • You can use the below updated code for the CleanUpTopNavigationBar 

    public override void ItemAdded(SPItemEventProperties properties)
    		{
    			base.ItemAdded(properties);
    			CleanUpTopNavigationBar("Department", properties.Web);
    			CreateTopNavigation(properties.Web.Site, properties.Web);
    		}
    
    		/// <summary>
    		/// An item was updated.
    		/// </summary>
    		public override void ItemUpdated(SPItemEventProperties properties)
    		{
    			base.ItemUpdated(properties);
    			CleanUpTopNavigationBar("Department", properties.Web);
    			CreateTopNavigation(properties.Web.Site, properties.Web);
    		}
    
    		/// <summary>
    		/// An item was deleted.
    		/// </summary>
    		public override void ItemDeleted(SPItemEventProperties properties)
    		{
    			base.ItemDeleted(properties);
    			CleanUpTopNavigationBar("Department", properties.Web);
    			CreateTopNavigation(properties.Web.Site, properties.Web);
    		}
    		public static void CleanUpTopNavigationBar(string header,SPWeb web)
    		{
    			web.AllowUnsafeUpdates = true;
    			SPNavigationNodeCollection topNavigation = web.Navigation.TopNavigationBar;
    
    			// try to get quick launch header
    			SPNavigationNode nodeHeader = topNavigation.Cast<SPNavigationNode>().Where(n => n.Title == header).FirstOrDefault();
    
    			//if header not found remove it
    			if (nodeHeader != null)
    			{
    				topNavigation.Delete(nodeHeader);
    			}
    
    		}


    Hiren Patel | Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.

    • Marked as answer by Dany Darshan Monday, July 23, 2012 1:31 PM
    Monday, July 23, 2012 1:14 PM
  • Dear Hiren,
    Thank you very much for giving this code and guiding with step by step.

    I got the solution, but I need to get the solution for these problems..

    1. If list data is modified, then the drop down menu should be update.
    2. In drop down Menu, how to give separate URL to the child items like, If I click "Dot Net" it should redirect to Dot net page or sub site, as same as for "PHP" it should redirect to php page......  


    • Marked as answer by Dany Darshan Tuesday, July 24, 2012 5:22 AM
    Monday, July 23, 2012 6:47 AM
  • Dear Hiren,

    I got the solution for redirect........

    what about this question..?

     If list item data is modified, then the drop down menu should be update ?

    For Example:  In a drop down menu 3 items are there called "Dot Net" "PHP" "SEO". Now I will delete "Dot Net" item in a LIST, after re-running the code again it is showing "Dot Net" in a drop down menu. 

    • Marked as answer by Dany Darshan Tuesday, July 24, 2012 5:24 AM
    Monday, July 23, 2012 8:57 AM
  • Still i'm not getting solution..... same problem....!!!

    For Example....  Department Drop down menu contains 3 departments like "Dot Net" ""PHP" "SEO".....  

    1. For Adding  new Department in a LIST called "Java" :-- The Drop down menu is adding the "Java"
    2. For Deleting exist Department in a LIST called "PHP" :-- The Drop down menu is not deleting the "PHP"
    3. For Updating exist Department in a LIST called "SEO" to "SEO123" :-- The Drop down menu is not updating the "SEO" to "SEO123"     

    This is the problem I'm facing........



    Monday, July 23, 2012 11:53 AM

All replies

  • If you are using SharePoint Foundation 2010, the top nav bar will be represented by asp:menu contril, which internally uses SPSiteMapDataSource control. You can replace this SPSiteMapDataSource control with XmlDataSource control. You can use SharePoint Designer / Programmatically populate the values for this Xml Data Source Control. If you don't have much experience with SP object model programming, i'd suggest you to go with the following approach

    http://blogs.msdn.com/b/matjazperpar/archive/2008/12/17/how-to-create-custom-navigation-menu-in-sharepoint-with-xml-data-source.aspx


    Sundar Narasiman

    Sunday, July 22, 2012 3:12 AM
  • Hello Darshan,

    You can use the Sharepoint object model rather then javascript or JQuery, to create a top link bar.

    because it is very easy using sharepoint object model.

    Here i will use the console application to create top navigation.

    So first open the visual studio and create a new console application as shown in image

    ( point 1,2 ).

    Now add the Sharepoint dll reference from 

    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI by right click on the solution and click on Add Reference

    As Shown in point 3 in image

    Select the Microsoft.SharePoint.dll from the  by go to browse section,

    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI location

    As Shown in point 4 in image

    then click ok and add below line of code in your Program.cs file

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.Navigation;
    
    namespace SampleConsole
    {
        class Program
        {
            static void Main(string[] args)
            {
                CreateTopNavigation();
            }
            public static void CreateTopNavigation()
            {
                using (SPSite site = new SPSite("http://win-fk2l3mm75a3:1111/"))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists["Employee details"];
                        foreach (SPListItem item in list.Items)
                        {
                            CreateTopNavigation(site, web, "Department", item.ParentList.DefaultViewUrl, Convert.ToString(item["Department"]), CreateItemViewUrl(web, item));
                        }
                    }
                }
            }
            public static string CreateItemViewUrl(SPWeb web,SPListItem item)        
            {
                string itemDisplayUrl = web.Url + item.ParentList.DefaultDisplayFormUrl +"?ID="+item.ID+"&Source="+web.Url+ item.ParentList.DefaultViewUrl+"&ContentTypeId="+item.ContentType.Id+"&IsDlg=1";
                    return itemDisplayUrl;
                
            }
            public static void CreateTopNavigation(SPSite site, SPWeb web, string header, string headerURL, string item, string url)
            {
    
                web.AllowUnsafeUpdates = true;
                SPNavigationNodeCollection topNavBar = web.Navigation.TopNavigationBar;
    
                //We are getting top navigation 
                SPNavigationNode nodeHeader = topNavBar.Cast<SPNavigationNode>().Where(n => n.Title == header).FirstOrDefault();
    
                //if header not found create it
                if (nodeHeader == null)
                    nodeHeader = topNavBar.AddAsFirst(new SPNavigationNode(header, headerURL, true));
                nodeHeader.Update();
    
                //try to get node item under header
                SPNavigationNode nodeItem = nodeHeader.Children.Cast<SPNavigationNode>().Where(n => n.Title == item).FirstOrDefault();
    
                //If item not found under heading then create it
                if (nodeItem == null)
                    nodeItem = nodeHeader.Children.AddAsLast(new SPNavigationNode(item, url, true));
                else
                    nodeItem.Url = url;
    
                nodeItem.Update();
                nodeHeader.Update();
    
            }
    
        }
    }
    


    Now replace the site url and list name according to your sharepoint site and list  inside below

    in my case my sharepoint site url is "http://win-fk2l3mm75a3:1111/" and list name is

    "Employee details"

    using (SPSite site = new SPSite("yoursite url"))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists["your list name"];
                 

    Now we are using the console application , so we need to do some extra settings in solution property , if u are creating the sharepoint solution then these settings are not required.

    so for that right click on the solution and go to the solution property as shown below

    As Shown in point 5 in image

    Now select the frame work version As Shown in point 6 in image

    Now select the platform 64 bit by go to the debug section as shown below image point 7

    Now save all the changes and run the console applicaion as shown in point 8

    Cheers....so once the application run successfully the top navigation link is added from the sharepoint list


    Hiren Patel | Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.

    Sunday, July 22, 2012 7:07 AM
  • Dear Hiren,
    Thank you very much for giving this code and guiding with step by step.

    I got the solution, but I need to get the solution for these problems..

    1. If list data is modified, then the drop down menu should be update.
    2. In drop down Menu, how to give separate URL to the child items like, If I click "Dot Net" it should redirect to Dot net page or sub site, as same as for "PHP" it should redirect to php page......  


    • Marked as answer by Dany Darshan Tuesday, July 24, 2012 5:22 AM
    Monday, July 23, 2012 6:47 AM
  • If you want to redirect the user on the particular subsite then you need to also stored the subsite url along with the Department column inside the list.

    lets say u have created the new column "subsiteUrl" by go to the list settings - > click on Create columns link.

    give the specific name of the new column "subsiteUrl" and select the type as a single line of text and click ok.

     so when you inserted the data for the department along with that u also need to insert the value of newly created column.

    so the function CreateItemViewUrl in above code will change like as shown below

    public static string CreateItemViewUrl(SPWeb web,SPListItem item)        
            {
                string itemDisplayUrl = Convert.ToString(item["subsiteUrl"]);            
            }



    Hiren Patel | Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.


    Monday, July 23, 2012 8:10 AM
  • Dear Hiren,

    I got the solution for redirect........

    what about this question..?

     If list item data is modified, then the drop down menu should be update ?

    For Example:  In a drop down menu 3 items are there called "Dot Net" "PHP" "SEO". Now I will delete "Dot Net" item in a LIST, after re-running the code again it is showing "Dot Net" in a drop down menu. 

    • Marked as answer by Dany Darshan Tuesday, July 24, 2012 5:24 AM
    Monday, July 23, 2012 8:57 AM
  • Hello Darshan,

    then for that you need to write the event receiver for the list item.

    you need to use above code inside the ItemUpdated event handler.

      public override void ItemUpdated(SPItemEventProperties properties)
           {
              //Use above code here with specific changes 
              base.ItemUpdated(properties);
           }

    so here we are getting the SPWeb object using properties.Web

    so in above console application CreateTopNavigation method will change and you need to call this method inside the ItemUpdated event receiver.

    public override void ItemUpdated(SPItemEventProperties properties)
    		{
    			base.ItemUpdated(properties);
    			CreateTopNavigation(properties.Web.Site, properties.Web);
    
    		}
    		public static void CreateTopNavigation(SPSite site, SPWeb web)
    		{
    			SPList list = web.Lists["Employee details"];
    			foreach (SPListItem item in list.Items)
    			{
    				CreateTopNavigation(site, web, "Department", item.ParentList.DefaultViewUrl, Convert.ToString(item["Department"]), CreateItemViewUrl(web, item));
    			}
    		}

    you can follow the below url to create the event receiver

    http://www.expertsupdates.com/sharepoint-articles/create-event-handler-for-sharepoint-list-31.aspx

    but here you need to select the An Item was updated receiver as shown below


    Hiren Patel | Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.


    Monday, July 23, 2012 9:29 AM
  • I have pasted full code in that ItemUpdated event handler.....Again I'm facing the same problem........

    Update means, If i delete "PHP" in SP LIST ,then it should be delete in drop down menu....... 

     
    Monday, July 23, 2012 10:24 AM
  • No update means you are modifying value not deliting.

    If you are deleted the value then you need to write the same code in ItemDeleted event handler

    public override void ItemDeleted(SPItemEventProperties properties)
    		{
    			base.ItemUpdated(properties);
    			CreateTopNavigation(properties.Web.Site, properties.Web);
    
    		}


    Hiren Patel | Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.

    Monday, July 23, 2012 11:24 AM
  • so the same code will be needed in all three event handler

    public override void ItemAdded(SPItemEventProperties properties)
           {
               base.ItemAdded(properties);
    		   CreateTopNavigation(properties.Web.Site, properties.Web);
           }
    
           /// <summary>
           /// An item was updated.
           /// </summary>
           public override void ItemUpdated(SPItemEventProperties properties)
           {
               base.ItemUpdated(properties);
    		   CreateTopNavigation(properties.Web.Site, properties.Web);
           }
    
           /// <summary>
           /// An item was deleted.
           /// </summary>
           public override void ItemDeleted(SPItemEventProperties properties)
           {
               base.ItemDeleted(properties);
    		   CreateTopNavigation(properties.Web.Site, properties.Web);
           }


    Hiren Patel | Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.

    Monday, July 23, 2012 11:26 AM
  • Still i'm not getting solution..... same problem....!!!

    For Example....  Department Drop down menu contains 3 departments like "Dot Net" ""PHP" "SEO".....  

    1. For Adding  new Department in a LIST called "Java" :-- The Drop down menu is adding the "Java"
    2. For Deleting exist Department in a LIST called "PHP" :-- The Drop down menu is not deleting the "PHP"
    3. For Updating exist Department in a LIST called "SEO" to "SEO123" :-- The Drop down menu is not updating the "SEO" to "SEO123"     

    This is the problem I'm facing........



    Monday, July 23, 2012 11:53 AM
  •  u most use ribbon split button with dynamic menu. if u want , i can help u

    yaşamak bir eylemdir

    Monday, July 23, 2012 11:59 AM
  • Dear Ilker Alizat,

    I din't get you......can you please explain ?

    I'm using Share Point Foundation 2010 and I'm new to share point.

    Monday, July 23, 2012 12:06 PM
  • hello ,

    can you please add below method and call it in all the event handlers method before CreateTopNavigation() method

    public static void CleanUpTopNavigationBar(string header)
            {
                using (SPSite site = SPContext.Current.Site)
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        web.AllowUnsafeUpdates = true;
                        SPNavigationNodeCollection topNavigation = web.Navigation.TopNavigationBar;
     
                        // try to get quick launch header
                        SPNavigationNode nodeHeader = topNavigation.Cast<SPNavigationNode>().Where(n => n.Title == header).FirstOrDefault();
     
                        //if header not found remove it
                        if (nodeHeader != null)
                        {
                            topNavigation.Delete(nodeHeader);
                        }
                    }
                }
            }


    so the event handler will loo like

    public override void ItemAdded(SPItemEventProperties properties)
           {
               base.ItemAdded(properties);
    			CleanUpTopNavigationBar("Department");
    		   CreateTopNavigation(properties.Web.Site, properties.Web);
           }
    
           /// <summary>
           /// An item was updated.
           /// </summary>
           public override void ItemUpdated(SPItemEventProperties properties)
           {
               base.ItemUpdated(properties);
    			CleanUpTopNavigationBar("Department");
    		   CreateTopNavigation(properties.Web.Site, properties.Web);
           }
    
           /// <summary>
           /// An item was deleted.
           /// </summary>
           public override void ItemDeleted(SPItemEventProperties properties)
           {
               base.ItemDeleted(properties);
    			CleanUpTopNavigationBar("Department");
    		   CreateTopNavigation(properties.Web.Site, properties.Web);
           }

    here the "Department" is the header that we have used to create the top navigation in above code


    Hiren Patel | Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.

    Monday, July 23, 2012 12:22 PM
  • Hello Hiren.

    Error

    Monday, July 23, 2012 12:50 PM
  • Use the properties.Web.Site instead of SPContext.Current.Site when calling a method inside an event handler. Btw, why did you declare it as static ?


    Kind Regards Bjoern
    Blog

    Monday, July 23, 2012 12:56 PM
    Moderator
  • You can use the below updated code for the CleanUpTopNavigationBar 

    public override void ItemAdded(SPItemEventProperties properties)
    		{
    			base.ItemAdded(properties);
    			CleanUpTopNavigationBar("Department", properties.Web);
    			CreateTopNavigation(properties.Web.Site, properties.Web);
    		}
    
    		/// <summary>
    		/// An item was updated.
    		/// </summary>
    		public override void ItemUpdated(SPItemEventProperties properties)
    		{
    			base.ItemUpdated(properties);
    			CleanUpTopNavigationBar("Department", properties.Web);
    			CreateTopNavigation(properties.Web.Site, properties.Web);
    		}
    
    		/// <summary>
    		/// An item was deleted.
    		/// </summary>
    		public override void ItemDeleted(SPItemEventProperties properties)
    		{
    			base.ItemDeleted(properties);
    			CleanUpTopNavigationBar("Department", properties.Web);
    			CreateTopNavigation(properties.Web.Site, properties.Web);
    		}
    		public static void CleanUpTopNavigationBar(string header,SPWeb web)
    		{
    			web.AllowUnsafeUpdates = true;
    			SPNavigationNodeCollection topNavigation = web.Navigation.TopNavigationBar;
    
    			// try to get quick launch header
    			SPNavigationNode nodeHeader = topNavigation.Cast<SPNavigationNode>().Where(n => n.Title == header).FirstOrDefault();
    
    			//if header not found remove it
    			if (nodeHeader != null)
    			{
    				topNavigation.Delete(nodeHeader);
    			}
    
    		}


    Hiren Patel | Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.

    • Marked as answer by Dany Darshan Monday, July 23, 2012 1:31 PM
    Monday, July 23, 2012 1:14 PM
  • Hi Hiren and all

    I got the solution thank you.....

    I need another solution..... can you please help me ?

    How to retrieve Active directory (AD) users Departments to share point site List ?  

    Monday, July 23, 2012 1:31 PM
  • Hi Darshan

    Your last question is a different topic so please create another thread for it.


    Kind Regards Bjoern
    Blog

    Monday, July 23, 2012 1:36 PM
    Moderator
  • i'd suggest you to go with the following approach: 

    SharePoint 2010 Ribbon Customization Part V: How to dynamically populate ribbon controls?

    in GetDynamicNewMenuXmlFunction()u can retrieve list items with ecma javascript and create your menu

    Adding a custom company menu tab with dynamic menu on the ribbon



    Monday, July 23, 2012 1:53 PM
  • Tuesday, July 24, 2012 5:15 AM
  • I built this project and it builds succesffully and deploys but nothing happens do you have any advice?

    Jerimiah pettigrew

    Thursday, September 24, 2015 7:16 PM