Skip to content

PopUpButton and PopupControl generic confirm alert

This operation provides two generic, non-domain-specific confirmation mechanisms: PopUpButton, a Button subclass that wraps its own click in a dialog, and PopupControl, a control that chains one or more dialogs and relays the result via postback.

Field Value
Operation ID OP-7
Trigger Hosting page sets Message/Messages and PopupType (and, for PopupControl, Active = True).
Inputs Message (PopUpButton), Messages (PopupControl), PopupType (Notify/Confirm)
Outputs For PopUpButton: postback proceeds or is cancelled. For PopupControl: ConfirmAction(Confirm, EventArgs)
Primary components PopUpButton.Render, PopupControl.Render, PopupControl.RaisePostBackEvent
Entry point SAIF.Presentation.Web.Controls.PopUps.Infragistics111\PopUpButton.vb, SAIF.Presentation.Web.Controls.PopUps.Infragistics111\PopupControl.vb

Steps

PopUpButton: 1. Render() adds an onclick attribute: - confirm(Message) wrapped in a return(...) (blocks postback on Cancel) if PopupType = Confirm. - A plain alert(Message) (does not block postback) if PopupType = Notify. 2. Calls the base Button.Render().

PopupControl: 1. Render() (when Active) builds a RunPopup() JS function: - For PopupTypes.Confirm: chains one confirm() call per entry in Messages — the loop overwrites the result variable unconditionally after each iteration, so effectively only the last dialog's result gates the outcome*. - For PopupTypes.Notify: a sequence of alert() calls. 2. Registers the script via Page.ClientScript.RegisterStartupScript and triggers a postback via Page.ClientScript.GetPostBackEventReference, carrying "true"/"false". 3. RaisePostBackEvent(eventArgument) raises ConfirmAction(CBool(eventArgument), EventArgs.Empty) back to the hosting page.

Process flow

The following diagram visualizes both generic confirm/alert paths.

flowchart TD
    subgraph PopUpButton
        PBStart([Button clicked]) --> PBType{PopupType}
        PBType -->|Confirm| PBConfirm[confirm returns via onclick]
        PBType -->|Notify| PBAlert[alert via onclick]
        PBConfirm --> PBOutcome([Postback proceeds/cancels])
        PBAlert --> PBProceed([Postback proceeds])
    end
    subgraph PopupControl
        PCStart([Active = True, Render]) --> PCBuild[Build RunPopup JS chaining confirm/alert calls]
        PCBuild --> PCPost[Trigger postback with true/false]
        PCPost --> PCRaise[RaisePostBackEvent]
        PCRaise --> PCConfirm([ConfirmAction raised])
    end

Failure and edge-case behavior

  • PopupControl's chained-confirm() loop overwrites its result variable on each iteration, so for multiple messages only the final dialog's outcome is reflected in the raised ConfirmAction value*.

Sources

  • SAIF.Presentation.Web.Controls.PopUps.Infragistics111\PopUpButton.vb
  • SAIF.Presentation.Web.Controls.PopUps.Infragistics111\PopupControl.vb