Skip to content

SAIF.Presentation.Web.Controls.AJAX.Infragistics111 business rules

This page captures business rules enforced by this library.

BR-AJAX-001: Bindable root object is the page's Model property

Field Value
Statement The bindable root object is the hosting page's property literally named Model.
Trigger Any binding operation
Enforcement SAIFAJAXControlAncestor.RootObject, BindingManager.GetRootObject
Outcome Pages must expose a Model property or nothing binds
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/SAIFAJAXControlAncestor.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/BindingManager.vb

BR-AJAX-002: Controls join automatic binding via iAutoBindingControl or their container

Field Value
Statement A control participates in automatic binding if it implements iAutoBindingControl or its binding container does.
Trigger BindingManager.DataBind and validity walks
Enforcement BindingManager.BindControl, CheckValidControls, GetErrorMessages
Outcome Composite editors bind through their container
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/BindingManager.vb

BR-AJAX-003: No root binding object means no binding

Field Value
Statement A control with no root binding object performs no binding.
Trigger DataBind
Enforcement AutoBindControlAncestor.DataBind
Outcome Unbound controls render their design value
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindControlAncestor.vb

BR-AJAX-004: Bound target resolved by walking the dotted BindSource path

Field Value
Statement The bound target is located by walking the dotted BindSource path from the root object and then addressing the BindProperty on the result.
Trigger Bind in either direction
Enforcement BindingUtility.GetObject, AutoBindControlAncestor.BoundObject
Outcome Nested model paths such as Submission.Locations.Primary are supported
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/BindingUtility.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindControlAncestor.vb

BR-AJAX-005: Reflection failures during binding are suppressed

Field Value
Statement Reflection failures during binding are suppressed rather than raised.
Trigger Any bind or value transfer
Enforcement BindingUtility.GetObjectValue / SetObjectValue / BindValue (Catch … 'gobble')
Outcome Misconfigured bindings fail silently
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/BindingUtility.vb

BR-AJAX-006: Controls validate automatically after bind and edit unless disabled

Field Value
Statement A control validates itself automatically after data binding and after every user edit unless the corresponding switch is turned off.
Trigger DataBind, BindToObject
Enforcement AutoValidateOnDataBind and AutoValidate (both default True)
Outcome Validation feedback without page code
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindControlAncestor.vb

BR-AJAX-007: A user edit is captured and pushed to the model immediately

Field Value
Statement A user edit is captured on the editor's change event and immediately pushed to the model.
Trigger TextChanged / ValueChange
Enforcement AutoBindTextbox, AutoBindWebMaskEdit, AutoBindWebDateTimeEdit handlers
Outcome Model stays current per postback
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindTextbox.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindWebMaskEdit.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindWebDateTimeEdit.vb

BR-AJAX-008: Validation messages come from the bound object's IDataErrorInfo

Field Value
Statement Validation messages come from the bound business object's IDataErrorInfo implementation for the bound property.
Trigger Reading ErrorMessages
Enforcement AutoBindControlAncestor.GetErrorMessages
Outcome Business-layer rules drive UI validation
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindControlAncestor.vb

BR-AJAX-009: An unbound control reports no errors

Field Value
Statement An unbound control reports no errors and is therefore considered valid.
Trigger Reading IsValid
Enforcement AutoBindControlAncestor.GetErrorMessages / IsValid
Outcome Unbound controls never block a page
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindControlAncestor.vb

BR-AJAX-010: Duplicate validation messages are shown only once

Field Value
Statement Duplicate validation messages are shown only once, separated by line breaks.
Trigger Assembling messages
Enforcement AutoBindControlAncestor.Validate, BindingManager.AppendUniqueMessages
Outcome Deduplicated error display
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindControlAncestor.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/BindingManager.vb

BR-AJAX-011: Validation messages are written to the page's LblErrorMsg label

Field Value
Statement Validation messages are written to a page-level label whose ID is LblErrorMsg.
Trigger Validate
Enforcement AutoBindControlAncestor.PageErrorLabel
Outcome Pages must provide that label
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindControlAncestor.vb

BR-AJAX-012: An invalid editor is highlighted red; a valid one is reset

Field Value
Statement An invalid editor is highlighted in red; a valid one is reset.
Trigger StyleControl
Enforcement All three concrete auto-bind controls
Outcome Visual error indication
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindTextbox.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindWebMaskEdit.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindWebDateTimeEdit.vb

BR-AJAX-013: The page is valid only when every auto-binding control is valid

Field Value
Statement The page is valid only when every auto-binding control on it is valid.
Trigger Reading BindingManager.IsValid
Enforcement BindingManager.CheckValidControls
Outcome Single page-level validity gate
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/BindingManager.vb

BR-AJAX-014: A hover panel renders above all content and is hidden until shown

Field Value
Statement A hover panel renders above all other page content and is hidden until the toolkit shows it.
Trigger Hover panel layout
Enforcement HoverPanel.LayoutControls (Display: None, Z-INDEX: 99999999)
Outcome Popup is always visible when triggered
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPanel.vb

BR-AJAX-015: Hover content is written unencoded

Field Value
Statement Hover content is written to the page as supplied, without HTML encoding, so callers may embed markup.
Trigger Hover panel layout
Enforcement HoverPanel, HoverPanelControl (TableCell.Text = ContentText)
Outcome Rich help markup is supported; unencoded content is a cross-site-scripting exposure if the text is not trusted
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPanel.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPanelControl.vb

BR-AJAX-016: Hover controls render nothing when there is no content

Field Value
Statement Hover controls render nothing when there is no content to show.
Trigger Render
Enforcement HoverPanel.RenderContents, HoverPicture.RenderContents
Outcome No empty help icons or panels
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPanel.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPicture.vb

BR-AJAX-017: Help text is identified by an application code and reference key with length ceilings

Field Value
Statement Help text is identified by an application code (max 5 characters) plus a reference key value (max 40).
Trigger Help retrieval
Enforcement clsHelpText.BeforeRetrieve AddParm calls
Outcome Parameter length ceilings enforced at the data request
Tables APPLICATION_HELP_MASTER, APPLICATION_HELP_DETAIL
SQL SQL-001, SQL-002
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/clsHelpText.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/clsHelpTextCollection.vb

BR-AJAX-018: Help content is assembled by joining master and detail on the reference key

Field Value
Statement Help content is assembled by joining the help master record to its detail record on the reference key value.
Trigger Help retrieval
Enforcement clsHelpText.Criteria.RetrieveSQL, clsHelpTextCollection.Criteria.RetrieveSQL
Outcome One combined description + text row
Tables APPLICATION_HELP_MASTER, APPLICATION_HELP_DETAIL
SQL SQL-001, SQL-002
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/clsHelpText.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/clsHelpTextCollection.vb

BR-AJAX-019: A help lookup that matches nothing yields empty text, not an error

Field Value
Statement A help lookup that matches nothing yields an object with empty text rather than an error.
Trigger Help retrieval
Enforcement clsHelpText.AfterRetrieve (If Reader.Read())
Outcome Missing help degrades silently
Tables APPLICATION_HELP_MASTER, APPLICATION_HELP_DETAIL
SQL SQL-001, SQL-002
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/clsHelpText.vb

BR-AJAX-020: Filling a help control with a null help object leaves content unchanged

Field Value
Statement Filling a help control with a null help object leaves the existing content unchanged.
Trigger HoverHelp.Fill
Enforcement HoverHelp.Fill(clsHelpText)
Outcome No null-reference failure
SQL SQL-001
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverHelp.vb

BR-AJAX-021: Grid customization state is created once per grid per model and reused

Field Value
Statement Grid customization state is created once per grid per model and reused on subsequent postbacks.
Trigger Reading ModalGridCustomizer.GridCustomizer
Enforcement ModalGridCustomizer.GridCustomizer (GridCustomizers list lookup)
Outcome Column choices persist across postbacks
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/ModalGridCustomizer.vb

BR-AJAX-022: A saved page size overrides the designed page size when the customizer controls paging

Field Value
Statement A user's saved page size overrides the grid's designed page size when the customizer controls paging.
Trigger Customizer construction
Enforcement InfragisticsGridCustomizer.New / PageSizePreference
Outcome Personalized page size
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-023: Page size defaults to 50 rows; paging shown only at two or more pages

Field Value
Statement Absent any other source, the page size defaults to 50 rows and paging is only displayed once there are at least 2 pages.
Trigger Customizer construction / ManipulateGrid
Enforcement DefaultPageSize = 50, MinimumPagesForDisplay = 2
Outcome Consistent paging defaults
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-024: Every override column must exist on the target grid

Field Value
Statement Every column named in an always-visible or always-hidden override must exist on the target grid.
Trigger Customizer construction
Enforcement InfragisticsGridCustomizer.ValidateColumnVisibilitySettings
Outcome ApplicationException naming the grid and the offending column
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-025: A column's initial visibility is derived from the grid definition

Field Value
Statement A column's initial visibility is derived from the grid definition: hidden or server-only columns start invisible.
Trigger Customizer construction
Enforcement InfragisticsGridCustomizer.InitializeColumnList
Outcome Designer intent is the starting state
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-026: An always-hidden column is forced server-only; others are cleared

Field Value
Statement An always-hidden column is forced server-only; all other columns have their hidden and server-only flags cleared so the customizer alone controls visibility.
Trigger HidableInfragisticsColumn.New
Enforcement HidableInfragisticsColumn constructor
Outcome Single point of visibility control
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-027: A saved preference for a removed column is ignored

Field Value
Statement A saved column preference for a column that no longer exists in the grid is ignored.
Trigger Loading preferences
Enforcement InfragisticsGridCustomizer.LoadColumnPreferences
Outcome Renamed/removed columns do not break the page
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-028: Always-visible or always-hidden columns cannot be changed

Field Value
Statement Columns marked always-visible or always-hidden cannot be changed by the user or by saved preferences.
Trigger Loading preferences, Update, ManipulateGrid
Enforcement LoadColumnPreferences, ManipulateGrid (VisibilityMode = Normal guard)
Outcome Mandatory columns stay mandatory
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-029: The page-size editor accepts at most three digits

Field Value
Statement The page-size editor accepts at most three digits.
Trigger Panel layout
Enforcement GridCustomizationPanel.LayoutControls (InputMask = "###")
Outcome Page size capped at 999
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/GridCustomizationPanel.vb

BR-AJAX-030: Select-All / Deselect-All operate entirely on the client

Field Value
Statement Select-All / Deselect-All operate entirely on the client and never post back.
Trigger Link button click
Enforcement SelectAllCheckboxList in SAIFAJAXControls.js; OnClientClick returns false
Outcome Instant toggling with no round trip
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/SAIFAJAXControls.js, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/GridCustomizationPanel.vb

BR-AJAX-031: The client script is registered from a fixed application path

Field Value
Statement The client script is registered from a fixed application path, /Resources/Scripts/SAIFAJAXControls.js.
Trigger Panel layout
Enforcement GridCustomizationPanel.LayoutControls
Outcome Hosting applications must publish the script at that path
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/GridCustomizationPanel.vb

BR-AJAX-032: Always-hidden columns are not offered to the user

Field Value
Statement Always-hidden columns are not offered to the user for selection.
Trigger Building the checkbox list
Enforcement InfragisticsGridCustomizer.ListItems
Outcome User cannot reveal internal columns
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-033: A column with no header caption is labeled from its key

Field Value
Statement A column with no header caption is labelled by splitting its key on capital letters.
Trigger Building the checkbox list
Enforcement ListItems (PadCapitalLettersFormat)
Outcome Readable label even without a designer-supplied caption
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-034: Always-visible columns appear checked but disabled

Field Value
Statement Always-visible columns appear checked but disabled.
Trigger Building the checkbox list
Enforcement ListItems (li.Enabled = c.VisibilityMode <> AlwaysVisible)
Outcome Mandatory columns visibly locked
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-035: The checkbox list is laid out to keep at most ten items per column

Field Value
Statement The column checkbox list is laid out in as many columns as needed to keep at most ten items per column, unless explicitly overridden.
Trigger Panel initialization
Enforcement GridCustomizationPanel.GetRepeatColumns
Outcome Compact popup layout
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/GridCustomizationPanel.vb

BR-AJAX-036: The Apply button is offered only when an async refresh target is configured

Field Value
Statement The Apply button is offered only when an asynchronous refresh target has been configured.
Trigger Panel layout
Enforcement GridCustomizationPanel (OKButton.Visible = AsynchronousGridRefresh)
Outcome No non-functional Apply button
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/GridCustomizationPanel.vb

BR-AJAX-037: Confirming the popup applies choices for the session only

Field Value
Statement Confirming the popup applies the user's column and page-size choices to the grid for the current session but does not save them.
Trigger OK / Apply click
Enforcement ModalGridCustomizer.CustomizationPanel_OKButtonClicked
Outcome Temporary customization
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/ModalGridCustomizer.vb

BR-AJAX-038: The rebind strategy after customization is chosen by the consumer

Field Value
Statement How the grid is rebound after customization is chosen by the consumer: object binder, native data bind, or a custom page handler.
Trigger Rebind after OK/Apply
Enforcement ModalGridCustomizer.CustomizationPanel_BindGrid (BindingBehaviors)
Outcome Flexible integration
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/ModalGridCustomizer.vb

BR-AJAX-039: Only "Save as Default" persists grid preferences

Field Value
Statement Only "Save as Default" persists the user's grid preferences.
Trigger Save-as-Default click
Enforcement ModalGridCustomizer.CustomizationPanel_SavePreferences → InfragisticsGridCustomizer.SavePreferences → clsPreferences.Save
Outcome Choices survive future sessions
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/ModalGridCustomizer.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-040: Hiding a column removes it entirely; re-showing reinserts it at its original position

Field Value
Statement Hiding a column removes it from the grid entirely rather than merely hiding it, and re-showing it reinserts it at its original ordinal position.
Trigger ManipulateGrid
Enforcement InfragisticsGridCustomizer.ManipulateGrid
Outcome Hidden column data is not sent to the client
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-041: Customizer-controlled paging is always switched on

Field Value
Statement When the customizer controls paging, paging is switched on for the grid regardless of its designed setting.
Trigger ManipulateGrid
Enforcement InfragisticsGridCustomizer.ManipulateGrid
Outcome Consistent paging behaviour
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb

BR-AJAX-042: Date editors display and edit in MM/dd/yyyy format

Field Value
Statement Date editors display and edit in MM/dd/yyyy format.
Trigger Date control layout
Enforcement AutoBindWebDateTimeEdit.LayoutControls
Outcome Fixed US date format, not culture-driven
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindWebDateTimeEdit.vb

BR-AJAX-043: Default help and customizer icons are served from fixed resource paths

Field Value
Statement The default help icon is served from /Resources/Images/DefaultHelpImage.gif and the grid customizer icon from /Resources/Images/DefaultModalGridCustomizer.gif when no image is configured.
Trigger Control layout
Enforcement HoverHelp.LayoutControls, ModalGridCustomizer.LayoutControls
Outcome Hosting applications must publish those images
Source SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverHelp.vb, SAIF.Presentation.Web.Controls.AJAX.Infragistics111/ModalGridCustomizer.vb

Inherited business rules

Rules in this section originate from base classes or services provided by dependency framework libraries. They are enforced by inherited behavior, not by code in this library. The originating class and library are recorded in each rule's Origin field.

INH-AJAX-001: Business objects route Create/Retrieve requests through IBusinessCriteria-driven data-portal operations

Field Value
Statement Business objects implementing IBusinessCriteria (such as clsHelpText.Criteria and clsHelpTextCollection.Criteria) route Create and Retrieve calls through the data portal's IDataAccess.CreateObject(criteria) / IDataAccess.RetrieveObject(criteria) operations, using an IBusinessCriteria or IBusinessApiCriteria instance with populated DataPortalInfo.†
Trigger Any CreateObject / RetrieveObject call against a criteria instance
Enforcement SAIF.Framework.Core data-portal pipeline (IDataAccess.CreateObject / IDataAccess.RetrieveObject)†
Outcome Consistent CRUD dispatch across all IBusinessCriteria implementations, including this library's clsHelpText.Criteria and clsHelpTextCollection.Criteria†
Origin SAIF.Framework.Core — IBusinessCriteria
Source Retrieved from indexed documentation via Legends CLI

Notes

  • AutoBindControlAncestor.Validate always returns True regardless of validity, although the iAutoBindingControl contract implies a boolean result; no caller in this repository appears to use the return value.*
  • ModalGridCustomizer declares MGC_-prefixed preference-key constants that are never used — the actual keys come from InfragisticsGridCustomizer's IGC_ constants.**
  • ModalGridCustomizer declares a public OnInitialize event that is never raised.*
  • GridCustomizationPanel raises AfterRender from CreateChildControls rather than from a render-phase method — the event name does not match when it fires.*
  • Mark inferred statements with * and unknown statements with **. Do not use bold inline confidence labels.
  • Statements marked with † were retrieved from dependency library documentation via the Legends CLI RAG service.

Note: Statements marked with † are derived from dependency library documentation via the Legends CLI. Statements marked with * were inferred from code structure or contextual evidence. Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/SAIFAJAXControlAncestor.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindControlAncestor.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindTextbox.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindWebMaskEdit.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/AutoBindWebDateTimeEdit.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/BindingManager.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/BindingUtility.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPanel.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPanelControl.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverPicture.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/HoverHelp.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/clsHelpText.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/clsHelpTextCollection.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/GridCustomizationPanel.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/ModalGridCustomizer.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/InfragisticsGridCustomizer.vb
  • SAIF.Presentation.Web.Controls.AJAX.Infragistics111/SAIFAJAXControls.js