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?