Hello,
I have a problem with the RadToolTipManager and ASP.NET Server Controls. The control which is loaded in the tooltip doesn’t update its label after the button click. I tested the same setup with an aspx page and a ascx user control, in this case everything works as expected.
Do you have any idea where I did something wrong? I used this example as a reference http://demos.telerik.com/aspnet-ajax/tooltip/examples/loadondemand/defaultcs.aspx. In the end, I would like to update the control on which the tooltip originated, but because the events in the tooltip itself don’t work, I haven’t tried that yet.
Thanks
Setup:
The Default.aspx file is nested within a master-page with a RadScriptManager, I used the Telerik.Web.UI.dll version 2011.1.519.35
Codes:
Default.aspx
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="AjaxTooltipRad._Default" %>
<%@ Register TagPrefix="tt" Assembly="AjaxTooltipRad" Namespace="AjaxTooltipRad.src" %>
<
asp:Content
ID
=
"BodyContent"
runat
=
"server"
ContentPlaceHolderID
=
"MainContent"
>
<
h2
>
Tooltip Test
</
h2
>
<
p
><
tt:GalleryControl
runat
=
"server"
/></
p
>
</
asp:Content
>
GalleryControl.cs
using
System;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
namespace
AjaxTooltipRad.src {
public
class
GalleryControl : Control, INamingContainer {
public
const
string
RTTMID =
"rttmid"
;
public
const
string
IMGID =
"imgid"
;
private
RadToolTipManager rttm;
private
Image img;
public
GalleryControl() :
base
() {
rttm =
new
RadToolTipManager();
rttm.ID = RTTMID;
rttm.Position = ToolTipPosition.BottomCenter;
rttm.RelativeTo = ToolTipRelativeDisplay.Element;
rttm.Width =
new
Unit(
"300px"
);
rttm.Height =
new
Unit(
"200px"
);
rttm.HideEvent = ToolTipHideEvent.LeaveTargetAndToolTip;
rttm.AjaxUpdate +=
new
ToolTipUpdateEventHandler(rttm_AjaxUpdate);
rttm.Skin =
"Default"
;
rttm.RenderInPageRoot =
true
;
img =
new
Image();
img.ID = IMGID;
rttm.TargetControls.Add(img.ClientID,
false
);
}
private
void
rttm_AjaxUpdate(
object
sender, ToolTipUpdateEventArgs e) {
UpdateToolTip(e.UpdatePanel);
}
private
void
UpdateToolTip( UpdatePanel panel) {
ServerControlToolTip sctt =
new
ServerControlToolTip();
panel.ContentTemplateContainer.Controls.Add(sctt);
}
protected
override
void
OnLoad(EventArgs e) {
base
.OnLoad(e);
this
.Controls.Add(rttm);
this
.Controls.Add(img);
}
}
}
ServerControlToolTip.cs
using
System;
using
System.Web.UI;
using
System.Web.UI.WebControls;
namespace
AjaxTooltipRad.src {
public
class
ServerControlToolTip : Control, INamingContainer {
private
const
string
textboxId =
"textboxid"
;
private
const
string
buttonId =
"buttonid"
;
private
const
string
labelId =
"labelid"
;
private
TextBox textBox;
private
Button button;
private
Label label;
public
ServerControlToolTip() {
textBox =
new
TextBox();
textBox.ID = textboxId;
button =
new
Button();
button.Text =
"click"
;
button.ID = buttonId;
button.Click +=
new
EventHandler(button_Click);
label =
new
Label();
label.ID = labelId;
}
private
void
button_Click(
object
sender, EventArgs e) {
label.Text = textBox.Text;
}
protected
override
void
OnLoad(EventArgs e) {
base
.OnLoad(e);
this
.Controls.Add(textBox);
this
.Controls.Add(button);
this
.Controls.Add(label);
}
}
}