I'm trying to build an alert into my master page that can be accessed from anywhere in the UI code-behind. Any method, any function.
I was doing quite well (I think) but I'm stuck now.
Master page
Master page code behind
Web content page
And the code behind
The alert will show if you uncomment out the entry in the page load. It will also work if you click the TestFeedbackNoAlert button.
It will not work if you click the
I've looked at the suggestions at:
http://www.telerik.com/support/kb/aspnet-ajax/window/calling-radalert-from-codebehind.aspx
But I'm none the wiser. Can anyone help? I need it to work no matter where it gets called (page load, postback, ajax call, etc.)
Regards,
Richard
I was doing quite well (I think) but I'm stuck now.
Master page
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Default.Master.cs" Inherits="Web.App_Templates.Default.Default" %> <%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %> <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head id="Head" runat="server"> <title><%= Page.Title %></title>
</head> <body> <form id="MainForm" runat="server"> <telerik:RadScriptManager ID="ScriptManager" runat="server"> </telerik:RadScriptManager> <telerik:RadAjaxManager ID="TelerikAjaxManager" runat="server"> </telerik:RadAjaxManager> <telerik:RadWindowManager ID="TelerikWindowManager" runat="server"> <Windows> <telerik:RadWindow ID="TelerikWindow" runat="server"> </telerik:RadWindow> </Windows> </telerik:RadWindowManager> <asp:UpdatePanel ID="UpdatePanel" runat="server"> <ContentTemplate> <asp:Literal ID="Feedback" runat="server" Text=" " /> <asp:ContentPlaceHolder ID="MainContentPlaceHolder" runat="server"> </asp:ContentPlaceHolder> </ContentTemplate> </asp:UpdatePanel> </form> </body> </html>Master page code behind
namespace Web.App_Templates.Default { using System; public partial class Default : System.Web.UI.MasterPage { public void ShowFeedback(string feedBackText, bool useAlert) { if (useAlert) { string radalertscript = string.Format("<script language='javascript'>function f(){{radalert('{0}', 330, 210);Sys.Application.remove_load(f);}};Sys.Application.add_load(f);</script>", feedBackText); Page.ClientScript.RegisterStartupScript(this.GetType(), "radalert", radalertscript); } else { this.Feedback.Text = feedBackText; } } } }Web content page
<%@ Page Title="Welcome" Language="C#" MasterPageFile="~/App_Templates/Default/Default.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Web.Default" %> <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <%@ MasterType VirtualPath="~/App_Templates/Default/Default.Master" %> <asp:Content ID="MainContent" ContentPlaceHolderID="MainContentPlaceHolder" runat="server"> <asp:Button ID="TestFeedbackAlert" runat="server" Text="Click Me" OnClick="TestFeedbackAlert_Click" Width="100" /> - <asp:Button ID="TestFeedbackNoAlert" runat="server" Text="Click Me" OnClick="TestFeedbackNoAlert_Click" Width="100" /> </asp:Content> And the code behind
namespace Web { using System; using System.Web.UI; public partial class Default : Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //this.Master.ShowFeedback("<p>Hello, AppWorld!</p>", true); } } protected void TestFeedbackAlert_Click(object sender, EventArgs e) { this.Master.ShowFeedback("<p>Clicked!</p>", true); } protected void TestFeedbackNoAlert_Click(object sender, EventArgs e) { this.Master.ShowFeedback("<p>Clicked!</p>", false); } } }The alert will show if you uncomment out the entry in the page load. It will also work if you click the TestFeedbackNoAlert button.
It will not work if you click the
TestFeedbackAlert button.I've looked at the suggestions at:
http://www.telerik.com/support/kb/aspnet-ajax/window/calling-radalert-from-codebehind.aspx
But I'm none the wiser. Can anyone help? I need it to work no matter where it gets called (page load, postback, ajax call, etc.)
Regards,
Richard