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
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
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
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
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