Here is my situation, I have a UserControl that has a simple Image, Label and a RadToolTipManager that gets the tooltip info via a WebService for both the Image and the Label. This UserControl is used on a RadGrid that goes inside an asp:UpdatePanel on a page Default.aspx. Inside the UpdatePanel I also have a RadTreeView that updates the content of the Grid on the onNodeClick event and the Default.aspx implements a MasterPage that has the asp:ScriptManager.
Great, so the on the Load of the Default.aspx page I load the TreeView and force the onNodeClick of the RootNode so the Grid is populated too. Until this point all works fine, the control displays the information fine and the RadToolTipManager shows the tooltip info from the WebService also fine.
The problem comes when I click on a different Node from the TreeView to and I reload the Grid contents causing the error:
“Cannot unregister UpdatePanel with ID 'RadToolTipManager1RTMPanel' since it was not registered with the ScriptManager. This might occur if the UpdatePanel was removed from the control tree and later added again, which is not supported.
Parameter name: updatePanel”
This error occur on the Grid.DataBind() line on the Default.aspx page.
I have a simple solution that replicates the problem but can't upload the files here, so will put some snippets below...
I already tried to use ScriptManagerProxy on both the Default.apsx and the Control.ascx, also tried to use the RadAjaxPanel instead of the UpdatePanel or using RadAjaxManager and RadAjaxManagerProxy and follow both (the only ones I could find) treads Compatibility with .NET 3.5 UpdatePanel? and RadAjaxManager initialized too late in the page life cycle but nothing changed.
My last try was to Register the RadToolTipManager programmatically on the control by getting the ScriptManager Instance but if I do that I get the error on the first page load instead.
Well, I am quite stuck with this situation now, and because of business requirements the ToolTip on this particular page is really important for the App. Anyone has any ideas on how to fix this?
Site.Master:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="AjaxRadTooltipError.Site" %> |
<!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 runat="server"> |
<title></title> |
<asp:ContentPlaceHolder ID="head" runat="server"> |
</asp:ContentPlaceHolder> |
</head> |
<body> |
<form id="form1" runat="server"> |
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" ScriptMode="Release"> |
<Services></Services> |
<Scripts></Scripts> |
</asp:ScriptManager> |
<div> |
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> |
</asp:ContentPlaceHolder> |
</div> |
</form> |
</body> |
</html> |
Default.aspx:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AjaxRadTooltipError.Default" %> |
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
<%@ Register src="Control.ascx" tagname="Control" tagprefix="uc1" %> |
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> |
</asp:Content> |
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> |
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> |
<ContentTemplate> |
<telerik:RadTreeView ID="RadTreeView1" runat="server" OnNodeClick="RadTreeView1_NodeClick"> |
</telerik:RadTreeView> |
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false"> |
<MasterTableView> |
<RowIndicatorColumn> |
<HeaderStyle Width="20px" /> |
</RowIndicatorColumn> |
<ExpandCollapseColumn> |
<HeaderStyle Width="20px" /> |
</ExpandCollapseColumn> |
<Columns> |
<telerik:GridTemplateColumn AllowFiltering="false" Resizable="true" HeaderText="Name" UniqueName="ItemName" ItemStyle-Width="300px"> |
<ItemTemplate> |
<uc1:Control ID="Control1" runat="server" /> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
</Columns> |
</MasterTableView> |
</telerik:RadGrid> |
</ContentTemplate> |
</asp:UpdatePanel> |
</asp:Content> |
Default.aspx.cs:
protected void Page_Load(object sender, EventArgs e) { |
if (!IsPostBack) |
LoadTreeView(); |
} |
protected void LoadTreeView() { |
RadTreeNode Node = new RadTreeNode(); |
Node.Text = "Root Node"; |
Node.Value = "0"; |
for (int count = 1; count <= 10; count++) { |
RadTreeNode SubNode = new RadTreeNode(); |
SubNode.Text = "Node " + count.ToString(); |
SubNode.Value = count.ToString(); |
Node.Nodes.Add(SubNode); |
} |
RadTreeView1_NodeClick(this, new RadTreeNodeEventArgs(Node)); |
RadTreeView1.Nodes.Add(Node); |
} |
protected void RadTreeView1_NodeClick(object sender, RadTreeNodeEventArgs e) { |
List<string> myDummyList = new List<string>(); |
for (int count = 0; count <= 2 + Convert.ToInt32(e.Node.Value); count++) { |
myDummyList.Add(count.ToString()); |
} |
RadGrid1.DataSource = myDummyList; |
RadGrid1.DataBind(); // Error happens here! |
} |
Control.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Control.ascx.cs" Inherits="AjaxRadTooltipError.Control" %> |
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
<asp:Panel ID="Panel1" runat="server"> |
<asp:Image ID="Image1" runat="server" ImageUrl="~/ObjectItem_Page.gif" /> |
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> |
</asp:Panel> |
<telerik:RadToolTipManager ID="RadToolTipManager1" runat="server"> |
<WebServiceSettings Path="~/Service_GetInfo.asmx" Method="GetResourceToolTip" /> |
<TargetControls> |
<telerik:ToolTipTargetControl TargetControlID="Image1" /> |
<telerik:ToolTipTargetControl TargetControlID="Label1" /> |
</TargetControls> |
</telerik:RadToolTipManager> |
Cheers,
Claiton Lovato