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¶
CreateChildControlsbuilds aPanel→Table→TableRow→TableCellstructure and a toolkitHoverMenuExtenderwhoseTargetControlIDis the caller-supplied trigger and whosePopupControlIDis the panel.LayoutControlsapplies theHoverHelp/thinDivFrameCSS classes, sets the panel width, hides it withDisplay: None, and forcesZ-INDEX: 99999999so it renders above other page content. (BR-AJAX-014)- The content cell's
Textis set directly fromContentText, without HTML encoding. (BR-AJAX-015) RenderContentsrenders nothing at runtime unlessContentTextis non-empty. (BR-AJAX-016)- On extender-render failure: the extender is rendered inside a
Try/Catchthat 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
ContentTextis 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
ContentTextis written unencoded, callers must ensure the text is trusted or pre-encoded; untrusted content is a cross-site-scripting exposure. (BR-AJAX-015)
Related documentation¶
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.vbSAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPanelControl.vbSAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPicture.vb