<asp:Content ID="Content1" ContentPlaceHolderID="cphHead" Runat="Server"><script type="text/javascript"> var rsEvents = null; var rgEvents = null; var rsPastEvents = null; var rgPastEvents = null; function onResponseEnd(sender, args) { if (args.EventTarget.replace(/\$/g, '_') == rgEvents.ClientID || args.EventTarget == rgPastEvents.ClientID) { $('#schedEvents').data('nr', true); $('#schedPastEvents').data('nr', true); } } $(document).ready(function () { $('#evtCalBtn').click(function () { $('#schedEvents').toggle('blind', {}, 500, null); if ($('#schedEvents').data('nr') == true) { rsEvents.repaint(); rsEvents.rebind(); } }); $('#pastEvtCalBtn').click(function () { $('#schedPastEvents').toggle('blind', {}, 500, null); if ($('#schedPastEvents').data('nr') == true) { rsPastEvents.repaint(); rsEvents.rebind(); } }); }); $(window).load(function () { $('#schedEvents').hide(); $('#schedPastEvents').hide(); rsEvents = $find('<%= rsEvents.ClientID %>'); rgEvents = $find('<%= rgEvents.ClientID %>'); rsPastEvents = $find('<%= rsPastEvents.ClientID %>'); rgPastEvents = $find('<%= rgPastEvents.ClientID %>'); $('#schedEvents').data('nr', false); $('#schedPastEvents').data('nr', false); });</script></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="cphBody" Runat="Server"><div> <div class="acnt"> <p>Upcoming Events <span id="evtCalBtn" class="viewCalender">(View Calendar)</span></p> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="rgEvents"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="rsEvents" UpdatePanelHeight="" /> <telerik:AjaxUpdatedControl ControlID="rgPastEvents" UpdatePanelHeight="" /> <telerik:AjaxUpdatedControl ControlID="rsPastEvents" UpdatePanelHeight="" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="rsEvents"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="rgEvents" UpdatePanelHeight="" /> <telerik:AjaxUpdatedControl ControlID="rgPastEvents" UpdatePanelHeight="" /> <telerik:AjaxUpdatedControl ControlID="rsPastEvents" UpdatePanelHeight="" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="rgPastEvents"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="rgEvents" UpdatePanelHeight="" /> <telerik:AjaxUpdatedControl ControlID="rsEvents" UpdatePanelHeight="" /> <telerik:AjaxUpdatedControl ControlID="rsPastEvents" UpdatePanelHeight="" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="rsPastEvents"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="rgEvents" UpdatePanelHeight="" /> <telerik:AjaxUpdatedControl ControlID="rsEvents" UpdatePanelHeight="" /> <telerik:AjaxUpdatedControl ControlID="rgPastEvents" UpdatePanelHeight="" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> <ClientEvents OnResponseEnd="onResponseEnd" /> </telerik:RadAjaxManager> <telerik:RadGrid ID="rgEvents" runat="server" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="sqldsEvents" GridLines="None" Skin="Windows7" onitemcommand="rgEvents_ItemCommand" AllowPaging="True"> <MasterTableView DataKeyNames="EventID" DataSourceID="sqldsEvents"> <CommandItemSettings ExportToPdfText="Export to Pdf"></CommandItemSettings> <Columns> <telerik:GridBoundColumn DataField="EventID" DataType="System.Int32" HeaderText="EventID" ReadOnly="True" SortExpression="EventID" UniqueName="EventID" Visible="False"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="StartDT" DataFormatString="{0:MM-dd-yyyy}" DataType="System.DateTime" HeaderText="StartDT" SortExpression="Date" UniqueName="StartDT"> <HeaderStyle Width="60px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="EventName" HeaderText="EventName" SortExpression="Event" UniqueName="EventName"> <HeaderStyle Width="100%" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Seats" DataType="System.Int32" HeaderText="Seats" SortExpression="# Seats" UniqueName="Seats"> <HeaderStyle Width="40px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="SeatsLeft" DataType="System.Int32" HeaderText="SeatsLeft" ReadOnly="True" SortExpression="# Left" UniqueName="SeatsLeft"> <HeaderStyle Width="40px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Cost" DataFormatString="{0:$#,0.00}" DataType="System.Decimal" HeaderText="Cost" SortExpression="Cost" UniqueName="Cost"> <HeaderStyle Width="60px" /> </telerik:GridBoundColumn> <telerik:GridHyperLinkColumn AllowFiltering="False" Groupable="False" Reorderable="False" Resizable="False" ShowSortIcon="False" Target="_blank" Text="View" UniqueName="colView" DataNavigateUrlFields="EventID" DataNavigateUrlFormatString="../../events.aspx?id={0}"> <ItemStyle Font-Size="7pt" /> </telerik:GridHyperLinkColumn> <telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName="colDelete" ConfirmText="Are you sure you want to cancel this event? You should send an email notiying them of the cancelation before continuing." ConfirmTitle="Question"> <ItemStyle Font-Size="7pt" /> </telerik:GridButtonColumn> <telerik:GridButtonColumn CommandName="Email" Text="Email" UniqueName="colEmail"> <ItemStyle Font-Size="7pt" /> </telerik:GridButtonColumn> <telerik:GridButtonColumn CommandName="Copy" Text="Copy" UniqueName="colCopy"> <ItemStyle Font-Size="7pt" /> </telerik:GridButtonColumn> <telerik:GridButtonColumn CommandName="Manage" Text="Manage" UniqueName="colManage"> <ItemStyle Font-Size="7pt" /> </telerik:GridButtonColumn> </Columns> </MasterTableView> </telerik:RadGrid> <div id="schedEvents" style="display: block"> <telerik:RadScheduler runat="server" ID="rsEvents" Height="580px" Width="100%" SelectedView="MonthView" ShowViewTabs="False" ShowNavigationPane="True" DataEndField="EndDT" DataKeyField="EventID" DataSourceID="sqldsEvents" DataStartField="StartDT" DataSubjectField="EventName" Skin="Windows7" onappointmentupdate="rsEvents_AppointmentUpdate" EnableAdvancedForm="False" onappointmentdelete="rsEvents_AppointmentDelete" Localization-ConfirmDeleteTitle="Question" Localization-ConfirmDeleteText="Are you sure you want to cancel this event? You should send an email notiying them of the cancelation before continuing." onappointmentcontextmenuitemclicked="rsEvents_AppointmentContextMenuItemClicked" AllowInsert="False" StartEditingInAdvancedForm="False" ontimeslotcontextmenuitemclicked="rsEvents_TimeSlotContextMenuItemClicked"> <AdvancedForm Modal="true" Enabled="False" /> <Localization ConfirmDeleteTitle="Question" ConfirmDeleteText="Are you sure you want to cancel this event? You should send an email notiying them of the cancelation before continuing."></Localization> <TimeSlotContextMenuSettings EnableDefault="true" /> <AppointmentContextMenus> <telerik:RadSchedulerContextMenu ID="RadSchedulerContextMenu1" runat="server"> <Items> <telerik:RadMenuItem runat="server" Text="View" Value="View"> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Text="Delete" Value="CommandDelete"> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Text="Email" Value="Email"> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Text="Copy" Value="Copy"> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Text="Manage" Value="Manage"> </telerik:RadMenuItem> </Items> </telerik:RadSchedulerContextMenu> <telerik:RadSchedulerContextMenu ID="RadSchedulerContextMenu2" runat="server"> </telerik:RadSchedulerContextMenu> </AppointmentContextMenus> </telerik:RadScheduler> </div> <br /> <p>Templates</p> <asp:UpdatePanel ID="upTemplates" runat="server" UpdateMode="Conditional"> <ContentTemplate> <telerik:RadGrid ID="rgTemplates" runat="server" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="sqldsTemplates" GridLines="None" Skin="Windows7" onitemcommand="rgTemplates_ItemCommand" AllowPaging="True"> <MasterTableView DataKeyNames="EventID" DataSourceID="sqldsTemplates"> <CommandItemSettings ExportToPdfText="Export to Pdf"></CommandItemSettings> <Columns> <telerik:GridBoundColumn DataField="EventID" DataType="System.Int32" HeaderText="EventID" ReadOnly="True" SortExpression="EventID" UniqueName="EventID" Visible="False"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="EventName" HeaderText="EventName" SortExpression="Event" UniqueName="EventName"> <HeaderStyle Width="100%" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Seats" DataType="System.Int32" HeaderText="Seats" SortExpression="# Seats" UniqueName="Seats"> <HeaderStyle Width="40px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Cost" DataFormatString="{0:$#,0.00}" DataType="System.Decimal" HeaderText="Cost" SortExpression="Cost" UniqueName="Cost"> <HeaderStyle Width="60px" /> </telerik:GridBoundColumn> <telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName="colDelete" ConfirmText="Are you sure you want to cancel this event? You should send an email notiying them of the cancelation before continuing." ConfirmTitle="Question"> <ItemStyle Font-Size="7pt" /> </telerik:GridButtonColumn> <telerik:GridButtonColumn CommandName="Copy" Text="Copy" UniqueName="colCopy"> <ItemStyle Font-Size="7pt" /> </telerik:GridButtonColumn> <telerik:GridButtonColumn CommandName="Manage" Text="Manage" UniqueName="colManage"> <ItemStyle Font-Size="7pt" /> </telerik:GridButtonColumn> </Columns> </MasterTableView> </telerik:RadGrid> </ContentTemplate> </asp:UpdatePanel> <br /> <p>Past Events <span id="pastEvtCalBtn" class="viewCalender">(View Calendar)</span></p> <telerik:RadGrid ID="rgPastEvents" runat="server" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="sqldsPastEvents" GridLines="None" Skin="Windows7" onitemcommand="rgPastEvents_ItemCommand" AllowPaging="True"> <MasterTableView DataKeyNames="EventID" DataSourceID="sqldsPastEvents"> <CommandItemSettings ExportToPdfText="Export to Pdf"></CommandItemSettings> <Columns> <telerik:GridBoundColumn DataField="EventID" DataType="System.Int32" HeaderText="EventID" ReadOnly="True" SortExpression="EventID" UniqueName="EventID" Visible="False"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="StartDT" DataFormatString="{0:MM-dd-yyyy}" DataType="System.DateTime" HeaderText="StartDT" SortExpression="Date" UniqueName="StartDT"> <HeaderStyle Width="60px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="EventName" HeaderText="EventName" SortExpression="Event" UniqueName="EventName"> <HeaderStyle Width="100%" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Seats" DataType="System.Int32" HeaderText="Seats" SortExpression="# Seats" UniqueName="Seats"> <HeaderStyle Width="40px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="SeatsLeft" DataType="System.Int32" HeaderText="SeatsLeft" ReadOnly="True" SortExpression="# Left" UniqueName="SeatsLeft"> <HeaderStyle Width="40px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Cost" DataFormatString="{0:$#,0.00}" DataType="System.Decimal" HeaderText="Cost" SortExpression="Cost" UniqueName="Cost"> <HeaderStyle Width="60px" /> </telerik:GridBoundColumn> <telerik:GridHyperLinkColumn AllowFiltering="False" Groupable="False" Reorderable="False" Resizable="False" ShowSortIcon="False" Target="_blank" Text="View" UniqueName="colView" DataNavigateUrlFields="EventID" DataNavigateUrlFormatString="../../events.aspx?id={0}"> <ItemStyle Font-Size="7pt" /> </telerik:GridHyperLinkColumn> <telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName="colDelete" ConfirmText="Are you sure you want to cancel this event? You should send an email notiying them of the cancelation before continuing." ConfirmTitle="Question"> <ItemStyle Font-Size="7pt" /> </telerik:GridButtonColumn> <telerik:GridButtonColumn CommandName="Email" Text="Email" UniqueName="colEmail"> <ItemStyle Font-Size="7pt" /> </telerik:GridButtonColumn> <telerik:GridButtonColumn CommandName="Copy" Text="Copy" UniqueName="colCopy"> <ItemStyle Font-Size="7pt" /> </telerik:GridButtonColumn> <telerik:GridButtonColumn CommandName="Manage" Text="Manage" UniqueName="colManage"> <ItemStyle Font-Size="7pt" /> </telerik:GridButtonColumn> </Columns> </MasterTableView> </telerik:RadGrid> <div id="schedPastEvents" style="display: block"> <telerik:RadScheduler runat="server" ID="rsPastEvents" Height="580px" Width="100%" SelectedView="MonthView" ShowViewTabs="False" ShowNavigationPane="True" DataEndField="EndDT" DataKeyField="EventID" DataSourceID="sqldsPastEvents" DataStartField="StartDT" DataSubjectField="EventName" Skin="Windows7" onappointmentupdate="rsPastEvents_AppointmentUpdate" EnableAdvancedForm="False" onappointmentdelete="rsPastEvents_AppointmentDelete" Localization-ConfirmDeleteTitle="Question" Localization-ConfirmDeleteText="Are you sure you want to cancel this event? You should send an email notiying them of the cancelation before continuing." onappointmentcontextmenuitemclicked="rsPastEvents_AppointmentContextMenuItemClicked" AllowInsert="False" StartEditingInAdvancedForm="False" ontimeslotcontextmenuitemclicked="rsPastEvents_TimeSlotContextMenuItemClicked"> <AdvancedForm Modal="true" Enabled="False" /> <Localization ConfirmDeleteTitle="Question" ConfirmDeleteText="Are you sure you want to cancel this event? You should send an email notiying them of the cancelation before continuing."></Localization> <TimeSlotContextMenuSettings EnableDefault="true" /> <AppointmentContextMenus> <telerik:RadSchedulerContextMenu ID="RadSchedulerContextMenu3" runat="server"> <Items> <telerik:RadMenuItem runat="server" Text="View" Value="View"> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Text="Delete" Value="CommandDelete"> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Text="Email" Value="Email"> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Text="Copy" Value="Copy"> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Text="Manage" Value="Manage"> </telerik:RadMenuItem> </Items> </telerik:RadSchedulerContextMenu> <telerik:RadSchedulerContextMenu ID="RadSchedulerContextMenu4" runat="server"> </telerik:RadSchedulerContextMenu> </AppointmentContextMenus> </telerik:RadScheduler> </div> </div></div>Good Afternoon,
I am attempting to use RadAjax to build several SharePoint WebParts that each reach out to remote datasources, databind then display thier data. I am encountering an issue displaying individual loading panels while these controls perform thier initial load (This can be lengthy, a few seconds apiece).
The behviour I am looking for is to have individual RadAjaxUpdatePanels displayed while each control is loading. I have followed the example outlined here (http://www.telerik.com/help/aspnet-ajax/ajxshowloadingpaneloninitialpageload.html) and this works quite well, provided that not more than a single instance of the webpart appears on a given page or any other webpart that impliments this solution.
Attached to this solution is a simplified version of the WebPart logic that substitudes the databinding with a
System.Threading.Thread.Sleep call to simulate the call to an external resource.
When more than one instance of the same part that impliments this login is present on a page, only the call back seems to occure, by this I mean that at the same instance (after the prescribbed delay) the callback renders both webparts simultainiously.
When instances of different WebParts implimenting this logic are on a given page, only the second callback appears to occure and only the last webpart is rendered after the prescribed delay.
I hope that this is enough to make the issue clear enough to address. Below is the source of the WebPart in it's entirety;
MyWeek WebPart Code
MyWeekPart.cs
| using System; |
| using System.Text; |
| using System.Collections.Generic; |
| using System.Web; |
| using System.Web.UI; |
| using System.Web.UI.WebControls; |
| using System.Web.UI.WebControls.WebParts; |
| using Microsoft.Practices.SPG.Common.Logging; |
| using Microsoft.Practices.SPG.Common.ServiceLocation; |
| using Telerik.Web.UI; |
| using NipissingU.Portal.Common.ExceptionHandling; |
| using NipissingU.Portal.Common.Entities; |
| using NipissingU.Portal.Colleague.Repositories; |
| using NipissingU.Portal.Common.Utility; |
| namespace NipissingU.Portal.WebPart.MyWeek |
| { |
| public class MyWeekPart : Microsoft.SharePoint.WebPartPages.WebPart |
| { |
| #region Fields... |
| private Control myWeekControl; |
| private Panel Panel1; |
| private Panel Panel2; |
| private RadAjaxLoadingPanel RadAjaxLoadingPanel1; |
| #endregion |
| #region Properties... |
| IErrorVisualizer ErrorVisualizer { get; set; } |
| #endregion |
| #region Overridden Methods... |
| protected override void OnInit(EventArgs e) |
| { |
| base.OnInit(e); |
| ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); |
| if (scriptManager == null) |
| { |
| scriptManager = new RadScriptManager(); |
| this.Page.Form.Controls.AddAt(0, scriptManager); |
| } |
| Page.ClientScript.RegisterStartupScript(typeof(MyWeekPart), this.ID, "_spOriginalFormAction = document.forms[0].action;_spSuppressFormOnSubmitWrapper=true;", true); |
| if (this.Page.Form != null) |
| { |
| string formOnSubmitAtt = this.Page.Form.Attributes["onsubmit"]; |
| if (!string.IsNullOrEmpty(formOnSubmitAtt) && formOnSubmitAtt == "return _spFormOnSubmitWrapper();") |
| { |
| this.Page.Form.Attributes["onsubmit"] = "_spFormOnSubmitWrapper();"; |
| } |
| } |
| } |
| protected override void OnLoad(EventArgs e) |
| { |
| base.OnLoad(e); |
| ErrorVisualizer errorVisualizer = new ErrorVisualizer(); |
| this.ErrorVisualizer = errorVisualizer; |
| try |
| { |
| this.Controls.Add(errorVisualizer); |
| // Load the UserControl Template from the /TEMPLATE/CONTROLTEMPLATES directory. |
| myWeekControl = Page.LoadControl("/_controltemplates/NipissingU/MyWeekControl.ascx"); |
| // Add the Loaded control to the WebParts Control collection. This is important to |
| // establish the Child Control Events! |
| errorVisualizer.Controls.Add(myWeekControl); |
| Panel1 = myWeekControl.FindControl("Panel1") as Panel; |
| Panel2 = Panel1.FindControl("Panel2") as Panel; |
| RadAjaxLoadingPanel1 = myWeekControl.FindControl("RadAjaxLoadingPanel1") as RadAjaxLoadingPanel; |
| RadAjaxManager AjaxManager1 = RadAjaxManager.GetCurrent(this.Page); |
| if (AjaxManager1 == null) |
| { |
| AjaxManager1 = new RadAjaxManager(); |
| AjaxManager1.ID = "RadAjaxManager1"; |
| Controls.Add(AjaxManager1); |
| this.Page.Items.Add(typeof(RadAjaxManager), AjaxManager1); |
| } |
| AjaxManager1.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(MyWeekPart_AjaxRequest); |
| } |
| catch (Exception ex) |
| { |
| new ViewExceptionHandler().HandleViewException(ex, this.ErrorVisualizer, |
| Constants.FriendlyError); |
| } |
| } |
| protected override void OnPreRender(EventArgs e) |
| { |
| base.OnPreRender(e); |
| if (!this.CheckForWebPartDisplayMode(WebPartManager.BrowseDisplayMode)) |
| { |
| new ViewExceptionHandler().ShowFunctionalErrorMessage(Constants.DisplayModeError, this.ErrorVisualizer); |
| } |
| } |
| #endregion |
| #region Events... |
| protected void MyWeekPart_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e) |
| { |
| try |
| { |
| if (e.Argument == "MyWeekLoad") |
| { |
| System.Threading.Thread.Sleep(2000); |
| Panel2.Visible = true; |
| Label Label2 = new Label(); |
| Label2.Text = e.Argument; |
| Panel2.Controls.Add(Label2); |
| } |
| } |
| catch (Exception ex) |
| { |
| } |
| } |
| #endregion |
| #region Private Methods... |
| protected bool CheckForWebPartDisplayMode(WebPartDisplayMode mode) |
| { |
| bool flag = false; |
| if ((base.WebPartManager != null) && (base.WebPartManager.DisplayMode == mode)) |
| { |
| flag = true; |
| } |
| return flag; |
| } |
| #endregion |
| } |
| } |
Constants.cs
| using System; |
| namespace NipissingU.Portal.WebPart.MyWeek |
| { |
| public static class Constants |
| { |
| public static string FriendlyError = "My Week is currently unavailable. Please try again later."; |
| public static string DisplayModeError = "The page is in edit mode. To show the contents of this web part, close the toolbar or refresh the web part."; |
| } |
| } |
MyWeekControl.aspx
| <%@ Control Language="C#" AutoEventWireup="true" Inherits="NipissingU.Portal.WebPart.MyWeek.MyWeekControl, NipissingU.Portal.WebPart.MyWeek, Version=1.0.0.0, Culture=neutral, PublicKeyToken=fc876b2c4bf21e29" %> |
| <%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI, Version=2009.3.1314.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4" %> |
| <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server"> |
| <script type="text/javascript"> |
| function addLoadEvent(func) |
| { |
| var oldonload = window.onload; |
| if (typeof window.onload != 'function') |
| { |
| window.onload = func; |
| } |
| else |
| { |
| window.onload = function() { |
| if (oldonload) |
| { |
| oldonload(); |
| } |
| func(); |
| } |
| } |
| } |
| function MyWeek_OnLoad() |
| { |
| setTimeout( function(){ window["<%= RadAjaxManager.GetCurrent(this.Page).ClientID %>"].ajaxRequest("MyWeekLoad"); }, 50); |
| } |
| addLoadEvent(MyWeek_OnLoad); |
| </script> |
| </telerik:RadScriptBlock> |
| <style type="text/css"> |
| .module1 |
| { |
| background-color: #dff3ff; |
| border: 1px solid #c6e1f2; |
| } |
| </style> |
| <telerik:RadAjaxManagerProxy ID="AjaxManagerProxy1" runat="server"> |
| <AjaxSettings> |
| <telerik:AjaxSetting AjaxControlID="Panel1"> |
| <UpdatedControls> |
| <telerik:AjaxUpdatedControl ControlID="Panel1" LoadingPanelID="RadAjaxLoadingPanel1" /> |
| </UpdatedControls> |
| </telerik:AjaxSetting> |
| <telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> |
| <UpdatedControls> |
| <telerik:AjaxUpdatedControl ControlID="Panel1" LoadingPanelID="RadAjaxLoadingPanel1" /> |
| </UpdatedControls> |
| </telerik:AjaxSetting> |
| </AjaxSettings> |
| </telerik:RadAjaxManagerProxy> |
| <fieldset class="module1"> |
| <asp:Panel ID="Panel1" runat="server" HorizontalAlign="Center" Height="150px"> |
| <asp:Panel ID="Panel2" runat="server" Visible="False"> |
| <asp:Button ID="Button1" runat="server" Text="Click to see the loading image" OnClick="Button1_Click" |
| Style="margin-top: 15px; margin-left: 15px" /> |
| <br /> |
| <asp:Label ID="Label1" runat="server" Text="Before Ajax..."></asp:Label> |
| </asp:Panel> |
| </asp:Panel> |
| </fieldset> |
| <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server"> |
| <div align="center" class="nu-loadingpanel-container"> |
| <div class="dt-bigthrobber"> </div> |
| <div>Loading...</div> |
| </div> |
| </telerik:RadAjaxLoadingPanel> |
MyWeekControl.cs
| using System; |
| using System.Data; |
| using System.Configuration; |
| using System.Collections; |
| using System.Web; |
| using System.Web.Security; |
| using System.Web.UI; |
| using System.Web.UI.WebControls; |
| using System.Web.UI.WebControls.WebParts; |
| using System.Web.UI.HtmlControls; |
| using Telerik.Web.UI; |
| namespace NipissingU.Portal.WebPart.MyWeek |
| { |
| public partial class MyWeekControl : System.Web.UI.UserControl |
| { |
| #region Fields... |
| protected Label Label1; |
| protected Panel Panel1; |
| protected Button Button1; |
| protected RadAjaxLoadingPanel RadAjaxLoadingPanel1; |
| #endregion |
| protected void Button1_Click(object sender, EventArgs e) |
| { |
| System.Threading.Thread.Sleep(2000); |
| Label1.Text = DateTime.Now.ToLongTimeString(); |
| } |
| } |
| } |
Christian
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="verticalTabStrip.aspx.cs"Inherits="verticalTabStrip" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title></title><style type="text/css">.RadToolBar, .rtbOuter, .rtbMiddle, .rtbInner, .rtbUL{height: 100%;}div.RadToolBar { display: block; }html, form, body { height: 100%; padding: 0; margin: 0; }</style> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ss" runat="server"/> <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server"> <script type="text/javascript"> function clientLoad(sender, args) { ResizeToolbar(); $telerik.$(window).resize(function() { ResizeToolbar(); }); } function ResizeToolbar() { var toolbar = $find("<%= RadToolBar1.ClientID %>"); var percents = 100 / toolbar.get_items().get_count(); $telerik.$(".rtbItem").css("height", percents + "%"); } function ToolBarOnClientMouseOver(oToolBar, args) { var oToolTipManager = $find("<%= RadToolTipManager1.ClientID %>"); var elem = args.get_item().get_element(); //Find the tooltip for this element if it has been created var tooltip = oToolTipManager.getToolTipByElement(elem); //Create a tooltip if no tooltip exists for such element if (!tooltip) { tooltip = oToolTipManager.createToolTip(elem); //Use the fact that the image was named after a country //Extract the country name from the image, and set it as the value to be supplied to the web-service tooltip.set_value(args.get_item().get_value()); } tooltip.show(); } </script> </telerik:RadScriptBlock> <telerik:RadToolBar ID="RadToolBar1" runat="server" Orientation="Vertical" OnClientLoad="clientLoad" OnClientMouseOver="ToolBarOnClientMouseOver" Skin="WebBlue" Height="100%" Width="63px"> <Items> <telerik:RadToolBarButton Text="button 1" Value="1" ImagePosition="AboveText" ImageUrl="Images/blog-blue.png" ToolTip="Blah"/> <telerik:RadToolBarButton Text="button 2" Value="2" ImagePosition="AboveText" ImageUrl="Images/blog-blue.png"/> <telerik:RadToolBarButton Text="button 3" Value="3" ImagePosition="AboveText" ImageUrl="Images/blog-blue.png"/> <telerik:RadToolBarButton Text="button 4" Value="4" ImagePosition="AboveText" ImageUrl="Images/blue-document.png"/> <telerik:RadToolBarButton Text="button 5" Value="5" ImagePosition="AboveText" ImageUrl="Images/blue-folder.png"/> </Items> </telerik:RadToolBar> <telerik:RadToolTipManager ID="RadToolTipManager1" runat="server" ShowCallout="false" Position="MiddleRight" RelativeTo="Element" Skin="WebBlue" Width="600px" Height="288px" HideEvent="LeaveTargetAndToolTip" OnAjaxUpdate="RadToolTip_AjaxUpdate" AutoCloseDelay="30000"> <TargetControls> </TargetControls> </telerik:RadToolTipManager> </form> </body></html>using System.Web.UI;using System;public partial class verticalTabStrip : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { } protected void RadToolTip_AjaxUpdate(object sender, Telerik.Web.UI.ToolTipUpdateEventArgs e) { Control c = Page.LoadControl(Page.ResolveUrl(String.Format("~/Controls/UserControl{0}.ascx", e.Value))); e.UpdatePanel.ContentTemplateContainer.Controls.Add(c); }}