Telerik is a leading vendor of ASP.NET AJAX, ASP.NET MVC, Silverlight, WinForms and WPF controls and components, as well as .NET Reporting, .NET ORM , .NET CMS, Code Analysis, Mocking, Team Productivity and Automated Testing Tools. Building on its expertise in interface development and Microsoft technologies, Telerik helps customers build applications with unparalleled richness, responsiveness and interactivity. Telerik products help thousands of companies to be more productive and deliver reliable applications under budget and on time.
Version Q2 2011 released 07/12/2011
select

Menu / Web Service


  • RadMenuItems can be populated via a WebService. This example shows how to dynamically load child items through a web service.

    The path to the WebService's asmx file and the name of the service method are specified in the WebService-Path and WebService-Method properties of the RadMenu's WebServiceSettings tag. You also need to set the ExpandMode of the items, which are supposed to load their children through a WebService, to "WebService". Optionally, you can handle the itemPopulating, itemPopulated and itemPopulationFailed client-side events. In addition, you can use the LoadingStatusTemplate property to create a loading template.

        <telerik:RadMenu ID="RadMenu1" runat="server" OnClientItemPopulating="itemPopulating">
            <WebServiceSettings Path="ProductCategories.asmx" Method="GetMenuCategories" />
            <LoadingStatusTemplate>
               ...
            </LoadingStatusTemplate>
            <Items>
                <telerik:RadMenuItem Text="Products" Value="1" ExpandMode="WebService"/>        
                 ...
            </Items>
        </telerik:RadMenu>

    To use the integrated WebService support of RadMenu, the WebService should have the following signature:

    [ScriptService]
    public class WebServiceName : WebService
    {
    	[WebMethod]
    	public RadMenuItemData[] WebServiceMethodName(RadMenuItemData item, object context)
    	{
            	// We cannot use a dictionary as a parameter, because it is only supported by script services.
    		// The context object should be cast to a dictionary at runtime.
    		IDictionary<string, object> contextDictionary = (IDictionary<string, object>) context;
    		
    		//...
    	}
    }
    

    The itemPopulating event can be used to pass parameters from the client-side to the WebService by using the "context" dictionary object.

    function itemPopulating(sender, eventArgs)
    {
    	var item = eventArgs.get_item();
    	var context = eventArgs.get_context();
    	context["CategoryID"] = item.get_value();
    }
    

Source Code

C# VB.NET
Show code in new window Demo isolation steps
  • <%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
    <%@ Register TagPrefix="qsf" Namespace="Telerik.QuickStart" %>
    <%@ Register TagPrefix="qsf" TagName="Header" Src="~/Common/Header.ascx" %>
    <%@ Register TagPrefix="qsf" TagName="HeadTag" Src="~/Common/HeadTag.ascx" %>
    <%@ Register TagPrefix="qsf" TagName="Footer" Src="~/Common/Footer.ascx" %>

    <%@ Page CodeFile="DefaultCS.aspx.cs" Language="c#" AutoEventWireup="false" Inherits="Telerik.Web.Examples.Menu.AddRemoveItems.DefaultCS" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <qsf:HeadTag runat="server" ID="Headtag1"></qsf:HeadTag>
    </head>
    <body class="BODY">
        <form runat="server" id="mainForm" method="post">
            <qsf:Header ID="Header1" runat="server" NavigationLanguage="C#"></qsf:Header>
            <telerik:RadScriptManager ID="ScriptManager" runat="server"></telerik:RadScriptManager>
            <telerik:RadMenu ID="RadMenu1" runat="server" EnableRoundedCorners="true" EnableShadows="true">
                <WebServiceSettings Path="ProductCategories.asmx" Method="GetMenuCategories" />
                <LoadingStatusTemplate>
                    <asp:Image runat="server" ID="LoadingImage" ImageUrl="Images/loading.gif" ToolTip="Loading..." Width="16px" Height="16px" style="margin-top:8px" />
                </LoadingStatusTemplate>
                <Items>
                    <telerik:RadMenuItem Text="Products" Value="1" ExpandMode="WebService">
                    </telerik:RadMenuItem>
                    <telerik:RadMenuItem Text="Purchase" Value="132" ExpandMode="WebService">
                    </telerik:RadMenuItem>
                    <telerik:RadMenuItem Text="Support" Value="141" ExpandMode="WebService">
                    </telerik:RadMenuItem>
                    <telerik:RadMenuItem Text="Community" Value="155" ExpandMode="WebService">
                    </telerik:RadMenuItem>
                    <telerik:RadMenuItem Text="Corporate" Value="164" ExpandMode="WebService">
                    </telerik:RadMenuItem>
                </Items>
            </telerik:RadMenu>
            <div style="height: 30px">
                <!-- -->
            </div>
            <qsf:Footer ID="Footer1" runat="server"></qsf:Footer>
        </form>
    </body>
    </html>

Get more than expected!

 
 

Take your time to truly experience the power of RadControls for ASP.NET AJAX with a free 60-day trial backed up by Telerik’s unlimited dedicated support.

Download your RadControls for ASP.NET AJAX trial and jumpstart your development with the available Getting Started resources.

If you have any questions, do not hesitate to contact us at sales@telerik.com.

Copyright 2002-2024 © Telerik. All right reserved
Telerik Inc, 201 Jones Rd, Waltham, MA 02451