Skip to content

Display hover help

This operation builds and renders a hover panel that pops up above other page content when the user hovers the configured trigger control, showing whatever content has been assigned to the panel.

Field Value
Operation ID OP-AJAX-06
Trigger Page render (composition); client-side hover event (display)
Inputs ContentText, TargetControlID, PopupPosition, PanelWidth
Outputs Rendered hover panel markup and a HoverMenuExtender wired to the trigger
Primary components HoverPanel.CreateChildControls, LayoutControls, RenderContents
Entry point SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPanel.vb

Steps

  1. CreateChildControls builds a Panel → Table → TableRow → TableCell structure and a toolkit HoverMenuExtender whose TargetControlID is the caller-supplied trigger and whose PopupControlID is the panel.
  2. LayoutControls applies the HoverHelp / thinDivFrame CSS classes, sets the panel width, hides it with Display: None, and forces Z-INDEX: 99999999 so it renders above other page content. (BR-AJAX-014)
  3. The content cell's Text is set directly from ContentText, without HTML encoding. (BR-AJAX-015)
  4. RenderContents renders nothing at runtime unless ContentText is non-empty. (BR-AJAX-016)
  5. On extender-render failure: the extender is rendered inside a Try/Catch that discards any exception.*

Process flow

The following diagram visualizes this operation's control flow.

flowchart TD
    Start([Page render]) --> Build[CreateChildControls builds panel + HoverMenuExtender]
    Build --> Layout[LayoutControls applies CSS, width, Display:None, Z-INDEX]
    Layout --> SetText[Set content cell Text from ContentText]
    SetText --> HasContent{ContentText<br>non-empty?}
    HasContent -->|No| EndEmpty([Render nothing])
    HasContent -->|Yes| Render[RenderContents renders panel + extender]
    Render --> EndOk([Hover panel available client-side])

Failure and edge-case behavior

  • If ContentText is empty, the control renders nothing — no empty help icon or panel appears. (BR-AJAX-016)
  • Any exception raised while rendering the toolkit extender is caught and discarded.*
  • Because ContentText is written unencoded, callers must ensure the text is trusted or pre-encoded; untrusted content is a cross-site-scripting exposure. (BR-AJAX-015)

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPanel.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPanelControl.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPicture.vb