This example illustrates how to use the RadAjaxManager class to enable complex update relationships between web controls with ajax. In this particular organizer web application there are two controls that can initiate an AJAX request: Calendar and Grid.
When the user selects a date from the calendar, this will cause two controls to be updated: 1) The grid that lists the email messages received 2) The MS DetailsView control that displays the text of the current message When the user selects a message from the grid control, this will cause the details view to be updated with the text of the correct message.
<%@ Register TagPrefix="telerik" TagName="Footer" Src="~/Common/Footer.ascx" %><%@ Register TagPrefix="telerik" TagName="HeadTag" Src="~/Common/HeadTag.ascx" %><%@ Register TagPrefix="telerik" TagName="Header" Src="~/Common/Header.ascx" %><%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %><%@ Page Language="c#" CodeFile="DefaultCS.aspx.cs" Inherits="Telerik.AJAXExamplesCSharp.AJAX.Examples.Manager.FirstLook.DefaultCS" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <telerik:HeadTag ID="Headtag1" runat="server"></telerik:HeadTag> <!-- custom head section --> <style type="text/css"> td.CalendarDay a { background: transparent url(Img/calendarDateBg.gif) center center no-repeat; text-decoration: none; display: block; line-height: 16px; } td.CalendarDay a:active { color: #cd6f00 !important; font-weight: bold; } #MessageBody td { vertical-align: top; } </style> <!-- end of custom head section --></head><body class="BODY"> <form id="mainForm" method="post" runat="server"> <telerik:Header ID="Header1" runat="server" XhtmlCompliant="false" NavigationLanguage="CS" ShowSkinChooser="true"></telerik:Header> <!-- content start --> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> //<![CDATA[ function DateClick(sender, args) { var get_date = args.get_renderDay().get_date(); var date = get_date[0] + "/" + get_date[1] + "/" + get_date[2]; if (date != "2006/5/28" && date != "2006/5/29" && date != "2006/5/30") { args.set_cancel(true); alert("You can select highlighted dates only"); } else { var selectedDateTriplet = $find("<%= RadCalendar1.ClientID %>").get_selectedDates()[0]; var selectedDate = selectedDateTriplet[0] + "/" + selectedDateTriplet[1] + "/" + selectedDateTriplet[2]; if (date == selectedDate) { args.set_cancel(true); } } } //]]> </script> </telerik:RadCodeBlock> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadCalendar1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadCalendar1"></telerik:AjaxUpdatedControl> <telerik:AjaxUpdatedControl ControlID="EmailGrid" LoadingPanelID="RadAjaxLoadingPanel1"> </telerik:AjaxUpdatedControl> <telerik:AjaxUpdatedControl ControlID="MessageBody" LoadingPanelID="RadAjaxLoadingPanel1"> </telerik:AjaxUpdatedControl> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="EmailGrid"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="EmailGrid"></telerik:AjaxUpdatedControl> <telerik:AjaxUpdatedControl ControlID="MessageBody" LoadingPanelID="RadAjaxLoadingPanel1"> </telerik:AjaxUpdatedControl> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" /> <telerik:RadSplitter ID="MainSplitter" runat="server" Orientation="Horizontal" Width="100%"> <telerik:RadPane ID="NestedSplitterPane" runat="server" Scrolling="None" Height="210px"> <telerik:RadSplitter ID="NestedSplitter" runat="server" Orientation="Vertical"> <telerik:RadPane ID="CalendarPane" runat="server" Scrolling="None" Width="220px"> <telerik:RadToolBar ID="CalendarToolbar" runat="server" Width="100%"> <Items> <telerik:RadToolBarButton Text="Calendar" Font-Bold="true" Font-Size="16px" Font-Names="arial" /> </Items> </telerik:RadToolBar> <telerik:RadCalendar ID="RadCalendar1" runat="server" DayNameFormat="FirstLetter" FocusedDate="2006/05/01" OnDayRender="RadCalendar1_DayRender" OnSelectionChanged="RadCalendar1_SelectionChanged" EnableMultiSelect="false" AutoPostBack="true" UseColumnHeadersAsSelectors="false" UseRowHeadersAsSelectors="false"> <ClientEvents OnDateClick="DateClick" /> </telerik:RadCalendar> </telerik:RadPane> <telerik:RadPane ID="GridPane" runat="server" Scrolling="None"> <telerik:RadToolBar ID="GridToolbar" runat="server" Width="100%"> <Items> <telerik:RadToolBarButton Text="Inbox" Font-Bold="true" Font-Size="16px" Font-Names="arial" /> </Items> </telerik:RadToolBar> <telerik:RadGrid ID="EmailGrid" DataSourceID="SqlDataSource1" runat="server" GridLines="None" Height="177px" CellPadding="0" AutoGenerateColumns="False"> <MasterTableView DataKeyNames="id"> <Columns> <telerik:GridTemplateColumn HeaderText=" From / Subject"> <ItemTemplate> <table cellpadding="2" cellspacing="0" style="cursor: default;"> <tr> <td style="border: 0px;"> <img src="Img/mailRead<%# Eval("read") %>.gif" height="12" width="13" style="margin: 0px 3px;" alt="" /> </td> <td style="border: 0px;"> <%# Eval("Name") %> <br /> <span>Subject: <asp:LinkButton Text='<%# Eval("subject") %>' CommandName="Select" runat="server" ID="Linkbutton1" /> </span> </td> </tr> </table> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView> <ClientSettings EnablePostBackOnRowClick="true"> <Selecting AllowRowSelect="true" /> </ClientSettings> </telerik:RadGrid> </telerik:RadPane> </telerik:RadSplitter> </telerik:RadPane> <telerik:RadPane ID="MessagePane" runat="server" Scrolling="None" Height="150px"> <telerik:RadToolBar ID="MessageToolbar" runat="server" Width="100%"> <Items> <telerik:RadToolBarButton Text="Messages" Font-Bold="true" Font-Size="16px" Font-Names="arial" /> </Items> </telerik:RadToolBar> <asp:DetailsView ID="MessageBody" runat="server" DataSourceID="SqlDataSource2" Font-Size="14px" Width="100%" Height="120px" AutoGenerateRows="false" GridLines="None"> <Fields> <asp:BoundField DataField="Body" HeaderText="" /> </Fields> </asp:DetailsView> </telerik:RadPane> </telerik:RadSplitter> <asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:TelerikConnectionString %>" SelectCommand="SELECT * FROM [email] WHERE ([date] = @date)"> <SelectParameters> <asp:Parameter DefaultValue="2006-05-30" Name="date" Type="DateTime" /> </SelectParameters> </asp:SqlDataSource> <asp:SqlDataSource ID="SqlDataSource2" ConnectionString="<%$ ConnectionStrings:TelerikConnectionString %>" runat="server" SelectCommand="SELECT [body] FROM [email] WHERE (([date] = @date) AND ([ID] = @ID))"> <SelectParameters> <asp:Parameter DefaultValue="2006-05-30" Name="date" Type="DateTime" /> <asp:ControlParameter ControlID="EmailGrid" DefaultValue="" Name="ID" PropertyName="SelectedValue" Type="Int32" /> </SelectParameters> </asp:SqlDataSource> <!-- content end --> <telerik:Footer runat="server" ID="Footer1"></telerik:Footer> </form></body></html>
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.