I have created a user control that uses a tooltip to display a message to the user (success, error and exception messages).
ctlClientMessage.ascx
| <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ctlClientMessage.ascx.cs" | |
| Inherits="KHSUserControls.ctlClientMessage" %> | |
| <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> | |
| <telerik:RadToolTip ID="ClientSideMessageTip" runat="server" RelativeTo="BrowserWindow" Position="BottomRight" | |
| VisibleOnPageLoad="true" Animation="Fade" Width="300px" Height="120px" OffsetX="0" OffsetY="0" ShowCallout="false" | |
| Skin="Black"> | |
| <div style="text-align:center; vertical-align: middle;"> | |
| <div> | |
| <h4> | |
| <asp:Label ID="ClientSideMessage" runat="server" ForeColor="white" Text=""></asp:Label> | |
| </h4> | |
| </div> | |
| </div> | |
| </telerik:RadToolTip> |
ctlClientMessage.ascx.cs
| using System; | |
| using System.ComponentModel; | |
| using System.Drawing; | |
| namespace KHSUserControls | |
| { | |
| public partial class ctlClientMessage : System.Web.UI.UserControl, System.ComponentModel.IComponent | |
| { | |
| public enum MessageType { Error, Success, Information, Exception } ; | |
| private string _clientMessage = ""; | |
| /// <summary> | |
| /// Auto close delay in milliseconds. | |
| /// </summary> | |
| [Bindable(true), Category("Data"), Browsable(true), DescriptionAttribute("Auto close delay in milliseconds."), | |
| EditorBrowsable(EditorBrowsableState.Always)] | |
| public int AutoCloseDelayValue { get; set; } | |
| public ctlClientMessage() | |
| { | |
| AutoCloseDelayValue = 5000; | |
| } | |
| protected override void OnInit(EventArgs e) | |
| { | |
| if (AutoCloseDelayValue != 0) | |
| ClientSideMessageTip.AutoCloseDelay = AutoCloseDelayValue; | |
| _clientMessage = ""; | |
| ClientSideMessage.Text = ""; | |
| ClientSideMessageTip.VisibleOnPageLoad = false; | |
| } | |
| /// <summary> | |
| /// Show client side message. If method is called twice, show the first message unless the new message is an exception. | |
| /// </summary> | |
| /// <param name="msgType"></param> | |
| /// <param name="autoHide"></param> | |
| /// <param name="message"></param> | |
| public void ShowPageMessage(MessageType msgType, bool autoHide, string message) | |
| { | |
| if ((_clientMessage == "") || (MessageType.Exception == msgType)) | |
| { | |
| switch (msgType) | |
| { | |
| case MessageType.Error: | |
| case MessageType.Exception: | |
| ClientSideMessage.ForeColor = Color.Red; | |
| break; | |
| case MessageType.Success: | |
| ClientSideMessage.ForeColor = Color.Green; | |
| break; | |
| case MessageType.Information: | |
| ClientSideMessage.ForeColor = Color.White; | |
| break; | |
| } | |
| ClientSideMessageTip.VisibleOnPageLoad = true; | |
| _clientMessage = message; | |
| ClientSideMessage.Text = _clientMessage; | |
| ClientSideMessageTip.ManualClose = !autoHide; | |
| } | |
| else | |
| { | |
| return; | |
| } | |
| } | |
| } | |
| } |
Usage in page.aspx
| . | |
| . | |
| . | |
| </div> | |
| </div> | |
| </div> | |
| <uc1:ctlClientMessage ID="ClientMessage" runat="server"/> | |
| </telerik:RadAjaxPanel> | |
| . | |
| . | |
| . |
page.aspx.cs
| protected void Next_Click(object sender, EventArgs e) | |
| { | |
| if (NextClaim()) | |
| { | |
| UpdateClaimCount(); | |
| ClientMessage.ShowPageMessage(ctlClientMessage.MessageType.Information, true, "Next record."); | |
| } | |
| else | |
| ClientMessage.ShowPageMessage(ctlClientMessage.MessageType.Information, true, "Last record reached."); | |
| } | |
Now the problem is, I am using an ajaxpanel in the page.aspx with the tooltip user control. When I go to this page, I display a message using the tooltip user control but, when I do a postback (Caused by a combobox loading data) the same tooltip message is displayed on the page again. I only want to show the message when I call ClientMessage.ShowPageMessage procedure.
Any ideas?