Hi,
I have a Page Controller design pattern, so I have a base Page class that defines and dumps out a RadAjaxManager control. The (edited) base class is:
using System; |
using System.Collections.Generic; |
using System.Linq; |
using System.Text; |
using System.Web; |
using System.Xml; |
using xxx.yyy.ASPNET.Security; |
using xxx.yyy.Client; |
using xxx.yyy.Client.Security; |
using xxx.yyy.Core; |
using Telerik.Web.UI; |
namespace xxx.yyy.ASPNET |
{ |
public class AuthenticatedyyyPage : yyyPageBase |
{ |
private RadAjaxManager _radAjaxManager=null; |
#region ~ Properties ~ |
public RadAjaxManager AjaxManager |
{ |
get { return _radAjaxManager; } |
} |
#endregion |
protected override void OnLoad(EventArgs e) |
{ |
// set up global AJAX Manager |
_radAjaxManager = BuildRadAjaxManager(); |
Form.Controls.Add(_radAjaxManager); |
if (!ClientScript.IsClientScriptBlockRegistered(_radAjaxManager.ClientID)) |
{ |
ClientScript.RegisterClientScriptBlock(_radAjaxManager.GetType(), _radAjaxManager.ClientID,GenerateJavascript(),true); |
} |
base.OnLoad(e); |
} |
protected virtual RadAjaxManager BuildRadAjaxManager() |
{ |
RadAjaxManager radAjaxManager = new RadAjaxManager(); |
radAjaxManager.ID = "radAjaxManager"; |
return radAjaxManager; |
} |
private string GenerateJavascript() |
{ |
StringBuilder sb = new StringBuilder(); |
sb.Append("\n\nfunction migGetRadAjaxManager() {\n"); |
sb.Append("\tvar ajaxManager=$find(\"" + _radAjaxManager.ClientID + "\");\n"); |
sb.Append("\treturn ajaxManager;\n"); |
sb.Append("}\n\n"); |
return sb.ToString(); |
} |
} |
} |
(The RadAjaxManager is added into the Form and appears in the rendered HTML)
In the derived page, I want to add an AjaxSetting programmatically (as per http://www.telerik.com/help/aspnet-ajax/ajxaddajaxsettingsprogrammatically.html) in the Page_Load():
protected void Page_Load(object sender, EventArgs e) |
{ |
AjaxManager.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(AjaxManager_AjaxRequest); |
AjaxManager.AjaxSettings.AddAjaxSetting(btnCancel0, pnlScriptInjector); |
} |
But this results in the exception:
Object reference not set to an instance of an object.
AjaxManager.AjaxSettings.AddAjaxSetting(btnCancel0, pnlScriptInjector); |
at Telerik.Web.UI.AjaxSettingsCollection.AddAjaxSetting(Control ajaxifiedControl, Control updatedControl) |
at xxx.yyy.ASPNET.Presentation.Secure.Admin.ImportWindowsUsers.Page_Load(Object sender, EventArgs e) in c:\dev2008\yyy2\yyy_WEB\secure\admin\ImportWindowsUsers.aspx.cs:line 128 |
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) |
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) |
at System.Web.UI.Control.OnLoad(EventArgs e) |
at xxx.yyy.ASPNET.yyyBase.OnLoad(EventArgs e) in C:\dev2008\yyy2\xxx.yyy.ASPNET\yyyPageBase.cs:line 45 |
at xxx.yyy.ASPNET.Authenticatedyyy.OnLoad(EventArgs e) in C:\dev2008\yyy\xxx.yyy.ASPNET\AuthenticatedyyyPage.cs:line 138 |
at System.Web.UI.Control.LoadRecursive() |
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) |
Inspecting the variables in the debugger and I can't see anything that is null.
Could you please tell me why is this happening? Am I using it right?