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>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); } }}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); } }}<style type="text/css">#<%= StartTime.ClientID %>_timeView_wrapper { overflow:auto; width:83px; height:200px; }</style><telerik:RadTimePicker runat="server" ID="StartTime" CssClass="rsAdvTimePicker" Width="78px"> <dateinput id="DateInput3" runat="server" emptymessagestyle-cssclass="riError" emptymessage=" " /> <timepopupbutton visible="false" /> <timeview id="TimeView1" runat="server" columns="1" showheader="false" starttime="00:00" endtime="23:59" interval="00:30" /> </telerik:RadTimePicker>
protected void rbTestMailVersturen_Click(object sender, EventArgs e) { string query = ""; teller = 0; SaveMailingForm(); RadGrid emailgrid = new RadGrid(); PlaceHolder1.Controls.Add(emailgrid); //Fill a list with emailadresses FillEmailadressen(); for (int i = 0; i < emailadressen.Count; i++) { { using (conn = new SqlConnection(ConnectionString)) { conn.Open(); emailgrid.DataSource = null; emailgrid.Rebind(); string ID = Request.QueryString["id"].PadLeft(2, '0'); query = "SELECT * FROM A_MAN_" + ID + " WHERE EMAILCOLUMN ='" + emailadressen[i] + "'"; SqlDataAdapter da = new SqlDataAdapter(query, conn); DataTable dt = new DataTable(); da.Fill(dt); emailgrid.DataSource = dt; emailgrid.Rebind(); emailgrid.GridExporting += new OnGridExportingEventHandler(emailgrid_GridExporting); switch (rcbExportType.SelectedItem.Text) { case "CSV": emailgrid.MasterTableView.ExportToCSV(); break; case "Excel": emailgrid.MasterTableView.ExportToExcel(); break; case "PDF": emailgrid.MasterTableView.ExportToPdf(); break; case "Word": emailgrid.MasterTableView.ExportToWord(); break; } } } } } protected void emailgrid_GridExporting(object source, GridExportingArgs e) { string filename = DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + rtbOnderwerp.Text + teller + "."; switch (rcbExportType.SelectedItem.Text) { case "CSV": filename += "csv"; break; case "Excel": filename += "xls"; break; case "PDF": filename += "pdf"; break; case "Word": filename += "doc"; break; } string path = Server.MapPath("~/" + filename); using (FileStream fs = File.Create(path)) { Byte[] info = System.Text.Encoding.Default.GetBytes(e.ExportOutput); fs.Write(info, 0, info.Length); } MailMessage msg = new MailMessage(); MailAddress From = new MailAddress("info@xxxxxxxxxxxx.nl", "info@xxxxxxxxxxxx.nl"); msg.From = From; msg.Subject = rtbOnderwerp.Text; msg.Body = rtbMailtekst.Text; msg.To.Add(new MailAddress(emailadressen[teller])); teller++; Attachment at = new Attachment(Server.MapPath("~/" + filename)); msg.Attachments.Add(at); SmtpClient client = new SmtpClient("localhost"); client.Send(msg); msg.Dispose(); FileInfo fi = new FileInfo(Server.MapPath("~/" + filename)); fi.Delete(); if (teller == emailadressen.Count) Response.Redirect(Request.Url.ToString()); }<telerik:RadAsyncUpload ID="RadAsyncUpload1" runat="server" Skin="Black" CssClass="button"> <Localization Select="Almost 50 chars long text" /></telerik:RadAsyncUpload>