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

Cancel RadToolTipManager at AjaxUpdate

6 Answers 91 Views
ToolTip
This is a migrated thread and some comments may be shown as answers.
Brandon
Top achievements
Rank 1
Brandon asked on 11 Apr 2013, 09:27 PM
I have a RadToolTipManager set to AutoToolTipify my page, however, there are many controls on the page with a Title attribute set that I do not want tooltipped. Is there a way to cancel the tooltip creation based on the TargetControlID?

My thinking would be I could do something along these lines:

If e.TargetControlID.Contains("HyperLink1") Then
    'Do actions for tooltip
Else
    e.cancel()
End If

Is there any way to do what I'm hoping to do, or a good way to specify what to Tooltipify based on what the Title attribute is set to?

-Thanks

6 Answers, 1 is accepted

Sort by
0
Brandon
Top achievements
Rank 1
answered on 12 Apr 2013, 02:42 PM
Update with code. At this point, EVERYTHING is tooltipped. 

RadToolTipManager:
<telerik:RadToolTipManager ID="RadToolTipManager1" runat="server" Skin="Telerik" Animation="Slide" AnimationDuration="250" Overlay="True" AutoCloseDelay="0" OffsetX="195" AutoTooltipify="True" RelativeTo="Element" Sticky="True" HideEvent="LeaveTargetAndToolTip" Text="Loading..." ShowDelay="400"></telerik:RadToolTipManager>

RadGrid (Trying to tooltip the HyperLink in the first column:
<telerik:RadGrid ID="gridQueue" runat="server" CellSpacing="0" DataSourceID="QueueDS" GridLines="None" Skin="Telerik" AllowPaging="True">
                                        <MasterTableView AutoGenerateColumns="False" DataKeyNames="TagID" DataSourceID="QueueDS" PageSize="20">
                                            <CommandItemSettings ExportToPdfText="Export to PDF" />
                                            <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
                                                <HeaderStyle Width="20px" />
                                            </RowIndicatorColumn>
                                            <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column" Visible="True" Created="True">
                                                <HeaderStyle Width="20px" />
                                            </ExpandCollapseColumn>
                                            <Columns>
                                                <telerik:GridTemplateColumn DataField="TagID" DataType="System.Int32" FilterControlAltText="Filter TagID column" HeaderText="TagID" SortExpression="TagID" UniqueName="TagID">
                                                    <EditItemTemplate>
                                                        <asp:TextBox ID="TagIDTextBox" runat="server" Text='<%# Bind("TagID") %>'></asp:TextBox>
                                                    </EditItemTemplate>
                                                    <ItemTemplate>
                                                        <asp:HyperLink ID="HyperLink1" runat="server" title="tag" NavigateUrl='<%# "~/Queue/QueueSummary.aspx?tagID=" & Eval("TagID") %>' Text='<%# Eval("TagID") %>'></asp:HyperLink>
                                                    </ItemTemplate>
                                                </telerik:GridTemplateColumn>
                                                <telerik:GridBoundColumn DataField="TagStatus" FilterControlAltText="Filter TagStatus column" HeaderText="Status" UniqueName="TagStatus">
                                                    <ColumnValidationSettings>
                                                        <ModelErrorMessage Text="" />
                                                    </ColumnValidationSettings>
                                                </telerik:GridBoundColumn>
                                                <telerik:GridBoundColumn DataField="TagType" FilterControlAltText="Filter TagType column" HeaderText="Tag Type" SortExpression="TagType" UniqueName="TagType">
                                                    <ColumnValidationSettings>
                                                        <ModelErrorMessage Text="" />
                                                    </ColumnValidationSettings>
                                                </telerik:GridBoundColumn>
                                                <telerik:GridBoundColumn DataField="CreatedDTS" DataType="System.DateTime" FilterControlAltText="Filter CreatedDTS column" HeaderText="Created DTS" SortExpression="CreatedDTS" UniqueName="CreatedDTS">
                                                    <ColumnValidationSettings>
                                                        <ModelErrorMessage Text="" />
                                                    </ColumnValidationSettings>
                                                </telerik:GridBoundColumn>
                                                <telerik:GridBoundColumn DataField="ITEMNMBR" FilterControlAltText="Filter ITEMNMBR column" HeaderText="Item" SortExpression="ITEMNMBR" UniqueName="ITEMNMBR">
                                                    <ColumnValidationSettings>
                                                        <ModelErrorMessage Text="" />
                                                    </ColumnValidationSettings>
                                                </telerik:GridBoundColumn>
                                                <telerik:GridBoundColumn DataField="Quantity" DataType="System.Int32" FilterControlAltText="Filter Quantity column" HeaderText="Quantity" SortExpression="Quantity" UniqueName="Quantity">
                                                    <ColumnValidationSettings>
                                                        <ModelErrorMessage Text="" />
                                                    </ColumnValidationSettings>
                                                </telerik:GridBoundColumn>
                                                <telerik:GridBoundColumn DataField="StartingLoc" FilterControlAltText="Filter StartingLoc column" HeaderText="Starting Location" SortExpression="StartingLoc" UniqueName="StartingLoc">
                                                    <ColumnValidationSettings>
                                                        <ModelErrorMessage Text="" />
                                                    </ColumnValidationSettings>
                                                </telerik:GridBoundColumn>
                                                <telerik:GridBoundColumn DataField="SendToLoc" FilterControlAltText="Filter SendToLoc column" HeaderText="Send To Location" SortExpression="SendToLoc" UniqueName="SendToLoc">
                                                    <ColumnValidationSettings>
                                                        <ModelErrorMessage Text="" />
                                                    </ColumnValidationSettings>
                                                </telerik:GridBoundColumn>
                                            </Columns>
                                            <EditFormSettings>
                                                <EditColumn FilterControlAltText="Filter EditCommandColumn column">
                                                </EditColumn>
                                            </EditFormSettings>
                                             
                                            <PagerStyle PageSizeControlType="RadComboBox" AlwaysVisible="True" PageSizes="20" />
                                             
                                        </MasterTableView>
                                         
                                        <PagerStyle PageSizeControlType="RadComboBox" />
                                         
                                        <FilterMenu EnableImageSprites="False">
                                        </FilterMenu>
                                    </telerik:RadGrid>

Setting the ToolTipZoneID:
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        RadToolTipManager1.ToolTipZoneID = gridQueue.ClientID
    End If
    RebindGrids() 'Rebinds all grids on the page
End Sub
0
Marin Bratanov
Telerik team
answered on 15 Apr 2013, 11:21 AM
Hi Brandon,

If you want only certain controls tooltipified I would advise that you add them as targets and avoid using the AutoTooltipify feature: http://demos.telerik.com/aspnet-ajax/tooltip/examples/targetcontrolsandajax/defaultcs.aspx?product=tooltip.

The automatic tooltip generation goes through all possible HTML elements on the page and there isn't a way to have it exclude certain controls. You can try using the OnClientBeforeShow event and check for the target if this is a viable approach for you, e.g.:
function OnClientBeforeShow(sender, args)
{
    if (sender.get_targetControlID().indexOf("second") > -1)
    {
        args.set_cancel(true);
    }
}
<telerik:RadToolTipManager AutoTooltipify="true" ID="RadToolTipManager1" runat="server"
    OnClientBeforeShow="OnClientBeforeShow">
</telerik:RadToolTipManager>
<a id="first" title="first">first</a>
<br />
<a id="second" title="second">second</a>
and the second link will have no tooltip shown, but will have one generated and its title attribute will be removed from the HTML.

On using tooltip zones - there are some issues with them and partial page postbacks, so I can suggest you avoid them for more complex scenarios. Overall, the AutoTooltipify functionality is rather simplistic and cannot provide much flexibility and customizations. If you like I can provide a function override that can have the tooltip zones respected, but it will break other functionality (e.g. AjaxRequests) which is why it is not incorporated in the control's code.

Greetings,
Marin Bratanov
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
Brandon
Top achievements
Rank 1
answered on 15 Apr 2013, 08:42 PM
This is the approach I'm trying now, which is almost identical to the demo, but I still can't get it working! 

<telerik:RadToolTipManager ID="RadToolTipManager1" runat="server" Skin="Telerik" OffsetX="195" RelativeTo="Element" OnAjaxUpdate="AjaxUpdate"></telerik:RadToolTipManager>
Protected Sub AjaxUpdate(sender As Object, e As ToolTipUpdateEventArgs) Handles RadToolTipManager1.AjaxUpdate
    Page.Items.Add("tID", e.Value)
    Dim ctrl As Control = Page.LoadControl("~/Management/Dashboard/TagToolTip.ascx")
    e.UpdatePanel.ContentTemplateContainer.Controls.Add(ctrl)
 
End Sub
 
Protected Sub gridQueue_ItemDataBound(sender As Object, e As GridItemEventArgs) Handles gridQueue.ItemDataBound
    If e.Item.ItemType = GridItemType.Item OrElse e.Item.ItemType = GridItemType.AlternatingItem Then
        Dim target As Control = e.Item.FindControl("HyperLink1")
        If Not target Is Nothing Then
            Dim val As String = TryCast(e.Item, GridDataItem).GetDataKeyValue("TagID").ToString()
            Me.RadToolTipManager1.TargetControls.Add(target.ClientID, val, True)
        End If
    End If
End Sub
 
Protected Sub gridQueue_ItemCommand(sender As Object, e As GridCommandEventArgs) Handles gridQueue.ItemCommand
    If e.CommandName = "Sort" OrElse e.CommandName = "Page" Then
        RadToolTipManager1.TargetControls.Clear()
    End If
End Sub
<telerik:AjaxSetting AjaxControlID="gridQueue">
    <UpdatedControls>
        <telerik:AjaxUpdatedControl ControlID="RadToolTipManager1"></telerik:AjaxUpdatedControl>
        <telerik:AjaxUpdatedControl ControlID="gridQueue" UpdatePanelCssClass="" />
    </UpdatedControls>
</telerik:AjaxSetting>
0
Marin Bratanov
Telerik team
answered on 18 Apr 2013, 09:33 AM
Hi Brandon,

Could you explain what is it that is not working in this case. After modifying the code a bit so I can run it it seems to work fine for me and there are tooltips for the hyperlinks. I would only advise that you do not set such large values for the Offset properties, because they are designed for fine tuning of the position and not for changing it completely.

I am attaching here the page as I ran it as a reference. It is, indeed, very similar to the demo and there is no reason in it for major issues (apart from a few minor configurations in the manager that are advised here).

You can also consider attaching client-side event handlers for the desired elements to generate tooltips as shown in this demo: http://demos.telerik.com/aspnet-ajax/tooltip/examples/radtooltipmanagerclientapi/defaultcs.aspx.

If comparing your actual page with mine does not help you resolve the issue I advise that you modify my sample to show your problem and explain it in more detail so I can understand it and help.


Regards,
Marin Bratanov
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
Brandon
Top achievements
Rank 1
answered on 18 Apr 2013, 06:31 PM
Marin - 

Thank you for the sample code. It's working exactly as I'd expect and it looks near identical to my code. However, mine is still not functional. Stepping through the code I can see that it adds the target controls without issue, but the AjaxUpdate event is never fired. The grid is wrapped in a RadPageView control, I wouldn't think that would make a difference, but could it?
0
Marin Bratanov
Telerik team
answered on 19 Apr 2013, 09:01 AM
Hi Brandon,

It should not make a difference. Are both the tooltip manager and the grid in the same pageview and same update panel (if there is one) or are updated with the same AJAX setting of a RadAjaxManager? I am aware of one scenario where event handlers are not raised and it is described here, so you can take a look at that article and see if it applies for you and fixes the problem.


All the best,
Marin Bratanov
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
Tags
ToolTip
Asked by
Brandon
Top achievements
Rank 1
Answers by
Brandon
Top achievements
Rank 1
Marin Bratanov
Telerik team
Share this question
or