This is a migrated thread and some comments may be shown as answers.

Tooltip Not Showing on MouseOver - Same Code Works Elsewhere

2 Answers 182 Views
ToolTip
This is a migrated thread and some comments may be shown as answers.
Kevin
Top achievements
Rank 2
Kevin asked on 10 Apr 2009, 10:28 PM
I'm stumped.  I have a column in a grid with an image.  In one working page, on mouseover of the image we use the webservicesettings to call a service and dynamically value the mouseover tooltip with a larger thumbnail of the image.  It works great and is based on the image gallery sample that auto-sizes and such.

I have another page that also has an image column and calls a different service to do the same effect.  However when I mouse over the image NOTHING HAPPENS.  I set an alert in the OnClientBeforeShow function and it never seems to be called.  The only difference I can think of is that this page uses the code that does an OnPageLoad ajax request to show a loading graphic while the page loads.  Is this perhaps causing issues with the radtooltips?

The only differences I can think of are 1) the initial ajax on page load addition, and 2) the additional asp panel wrapped around things that is not in the other screen which works fine.

Here is the master page aspx, the page aspx, and the page code-behind.

Thx!

Master page:

<%@ Master Language="C#" AutoEventWireup="true" Codebehind="WebAppMaster.master.cs" 
    Inherits="Portal.Shell.MasterPages.WebAppMaster" %> 
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
<!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 id="Head" runat="server">  
<title></title>  
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
<meta name="description" content="" /> 
<meta name="keywords" content="" /> 
<meta name="author" content="" /> 
</head> 
<body> 
<div id="wrap">  
 
    <telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" DecoratedControls="All" /> 
    <form id="mainForm" runat="server">  
        <asp:ScriptManager ID="DefaultMasterScriptManager" runat="server"></asp:ScriptManager> 
        <asp:ContentPlaceHolder ID="DefaultContent" runat="server" /> 
        <br /><br /> 
    </form> 
 
</div> 
</body> 
</html> 
 

Now the aspx page:

<%@ Page Language="C#" AutoEventWireup="true" Codebehind="Domains.aspx.cs" Inherits="Portal.WebApp.Views.Domains" 
    Title="Domains" MasterPageFile="~/Shared/WebAppMaster.master" %> 
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %> 
<asp:Content ID="content" ContentPlaceHolderID="DefaultContent" Runat="Server">  
    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">  
       <script type="text/javascript">  
           function pageLoad(sender, eventArgs) {  
               if (!eventArgs.get_isPartialLoad()) {  
                   $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("InitialPageLoad");  
               }  
           }     
       </script> 
    </telerik:RadCodeBlock> 
    <script type="text/javascript">  
        var currentTooltip = null;  
 
        function OnClientBeforeShow(sender, args) {  
            //Hide the currently visible tooltip   
            if (currentTooltip) {  
                if (currentTooltip != sender) currentTooltip.hide();  
                return;  
            }  
 
            currentTooltip = sender;  
            args.set_cancel(true);  
        }  
 
        function centerTooltip(img) {  
            if (currentTooltip) {  
                currentTooltip.set_contentElement(img);  
 
                //use the method updateLocation because it does not call WebService's method which loads the content   
                currentTooltip.updateLocation();  
                currentTooltip = null;  
            }  
        }  
    </script> 
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" 
       OnAjaxRequest="RadAjaxManager1_AjaxRequest">  
       <AjaxSettings> 
           <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">  
               <UpdatedControls> 
                   <telerik:AjaxUpdatedControl ControlID="Panel1" 
                       LoadingPanelID="RadAjaxLoadingPanel1" /> 
               </UpdatedControls> 
           </telerik:AjaxSetting> 
       </AjaxSettings> 
    </telerik:RadAjaxManager> 
       <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Height="75px" 
        Width="75px">  
        <img alt="Loading..." src='<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading3.gif") %>' 
            style="border: 0px;" /> 
    </telerik:RadAjaxLoadingPanel> 
    <telerik:RadToolTipManager ID="RadToolTipManager1" runat="server" Position="center" 
        RelativeTo="BrowserWindow" OnClientBeforeShow="OnClientBeforeShow">  
        <WebServiceSettings Method="GetWebSiteThumb" Path="~/Services/WSSiteThumb.asmx" /> 
    </telerik:RadToolTipManager> 
    <h2>Domains</h2> 
    <asp:Panel ID="Panel1" runat="server">  
        <div class="breadcrumb">Back to: <href="Default.aspx">Jobs</a></div>  
        <telerik:RadGrid ID="RadGrid1" runat="server"   
            AllowSorting="True" GridLines="None" AutoGenerateColumns="false" OnItemCommand="RadGrid1_OnItemCommand" OnItemDataBound="RadGrid1_ItemDataBound">  
            <ClientSettings EnableRowHoverStyle="true">  
                <Selecting AllowRowSelect="false" /> 
            </ClientSettings> 
            <MasterTableView CellSpacing="-1">  
            <RowIndicatorColumn> 
            <HeaderStyle Width="20px"></HeaderStyle> 
            </RowIndicatorColumn> 
 
            <ExpandCollapseColumn> 
            <HeaderStyle Width="20px"></HeaderStyle> 
            </ExpandCollapseColumn> 
                <Columns> 
                    <telerik:GridTemplateColumn UniqueName="thumb" ItemStyle-Width="20px">  
                        <ItemTemplate> 
                            <asp:Image runat="server" ID="thumb" ImageUrl="" Width="16" Height="16" /> 
                        </ItemTemplate> 
                    </telerik:GridTemplateColumn> 
                    <telerik:GridBoundColumn UniqueName="domain" DataField="domain" HeaderText="Domain">  
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="score" DataField="score" HeaderText="Score">  
                    </telerik:GridBoundColumn> 
                    <telerik:GridButtonColumn CommandName="Select" Text="View Pages"   
                        UniqueName="select" HeaderText="Action">  
                    </telerik:GridButtonColumn> 
                </Columns> 
            </MasterTableView> 
        </telerik:RadGrid> 
    </asp:Panel> 
</asp:Content> 
 

...and the code-behind:

using System;  
using System.Data;  
using System.Configuration;  
using System.Collections;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Web.UI.HtmlControls;  
using Portal.WebApp.Views;  
using Microsoft.Practices.ObjectBuilder;  
using System.Collections.Generic;  
using Portal.BusinessObjects.Interface;  
using Telerik.Web.UI;  
 
namespace Portal.WebApp.Views  
{  
    public partial class Domains : Microsoft.Practices.CompositeWeb.Web.UI.Page, IDomainsView  
    {  
        private DomainsPresenter _presenter;  
 
        protected void Page_Load(object sender, EventArgs e)  
        {  
            if (!this.IsPostBack)  
            {  
                //this._presenter.OnViewInitialized();  
            }  
            this._presenter.OnViewLoaded();  
        }  
 
        protected void RadAjaxManager1_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e)  
        {  
            if (e.Argument == "InitialPageLoad")  
            {  
                this._presenter.OnViewInitialized();  
            }  
        }  
 
        [CreateNew]  
        public DomainsPresenter Presenter  
        {  
            get  
            {  
                return this._presenter;  
            }  
            set  
            {  
                if (value == null)  
                    throw new ArgumentNullException("value");  
 
                this._presenter = value;  
                thisthis._presenter.View = this;  
            }  
        }  
 
        #region IDefaultView Members  
 
        public void SetDataSource(List<ISentimentDomain> aDomains)  
        {  
            RadGrid1.DataSource = aDomains;  
            RadGrid1.DataBind();  
        }  
 
        protected void RadGrid1_OnItemCommand(object source, GridCommandEventArgs e)  
        {  
            if ("Select" == e.CommandName)  
            {  
                GridDataItem row = e.Item as GridDataItem;  
                TableCell did = row["domain"];  
 
                this._presenter.OnDomainSelected(did.Text);  
            }  
        }  
 
        protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)  
        {  
            if (e.Item is GridDataItem)  
            {  
                GridDataItem row = e.Item as GridDataItem;  
                TableCell dom = row["domain"];  
                Image img = row["thumb"].FindControl("thumb") as Image;  
                img.ImageUrl = "~/img/delete.gif";  
                this.RadToolTipManager1.TargetControls.Add(img.ClientID, dom.Text, true);  
            }  
        }  
 
        public void SetError(string sError)  
        {  
            Session["errormsg"] = sError;  
            Response.Redirect("~/Errors/WebAppError.aspx", true);  
        }  
 
        #endregion  
 
    }  
}  
 
 

2 Answers, 1 is accepted

Sort by
0
Accepted
Tsvetie
Telerik team
answered on 13 Apr 2009, 01:27 PM
Hello Kevin,
You need to update the RadToolTipManager when you update the RadGrid as you modify the manager's TargetControls collection in the ItemDataBound event of the grid:
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"  
       OnAjaxRequest="RadAjaxManager1_AjaxRequest">   
       <AjaxSettings>  
           <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">   
               <UpdatedControls>  
                   <telerik:AjaxUpdatedControl ControlID="Panel1"  
                       LoadingPanelID="RadAjaxLoadingPanel1" />  
                   <telerik:AjaxUpdatedControl ControlID="RadToolTipManager1" />  
               </UpdatedControls>  
           </telerik:AjaxSetting>  
       </AjaxSettings>  
    </telerik:RadAjaxManager>  


In case this does not help you, please prepare and send me a running project, demonstrating the problem so that I can research what is causing it locally.

Sincerely yours,
Tsvetie
the Telerik team

Check out Telerik Trainer , the state of the art learning tool for Telerik products.
0
Kevin
Top achievements
Rank 2
answered on 13 Apr 2009, 07:45 PM
That was the problem - thanks much!
Tags
ToolTip
Asked by
Kevin
Top achievements
Rank 2
Answers by
Tsvetie
Telerik team
Kevin
Top achievements
Rank 2
Share this question
or