With traditional web-based applications, it was often necessary to refresh entire screens to repopulate individual fields according to various triggering of business rules, such as populating a child list with values based upon a change in its parent value. ExtraView has maintained a rich set of features in addition to the management of parent-child relationships, such as visible if and required if. As powerful as many of these features were, they required ExtraView to execute the feature by returning the values from the browser to the server where the logic was used to send a complete page of information back to the browser. This is known as a “screen refresh” and whilst it is capable of executing complex logic, the process takes time, from a half-second to four or more seconds, depending on a variety of factors. These factors include the speed of the network and the speed of the hardware as well as the size and complexity of the ExtraView layouts that are being processed.
Using a technology known as Ajax, most screen refreshes are eliminated and the processing time is typically an order of magnitude less than the time for an entire screen refresh. The key places where ExtraView takes advantage of Ajax while processing issues on add and edit layouts are:
- To process layout cell attributes such as FIELD VISIBLE IF and FIELD REQUIRED IF. This includes the use of visible if to control entire embedded layouts
- To process layouts controlled by a tab or list field using the LAYOUT SELECTED mechanism
- To execute business rules that result in changes to values within fields on forms based upon field selections or data input
AJAX Limitations
The screen layout renderer in ExtraView always removes rows of fields where there is no visible content. This avoids unsightly gaps in the screen for your users. If you have a row that is entirely suppressed, and there are one or more fields on that row which are invisible due to a visible if cell attribute, then the row is not generated at all when the field or fields do not meet the criteria to become visible.
In this circumstance where the entire row is not rendered, there is insufficient information in the layout to use Ajax to populate the field when it becomes visible. As a result, ExtraView will revert to a full screen refresh. Thus the functionality is correct, but Ajax is not and cannot be used to make the field visible. If keeping the speed of the Ajax refresh is important to your application, consider altering your layout to include a field which will be visible at all times on the row of your layout so that something is always visible. This could even be a label field with a blank value. Although there is no obvious effect from this, it is actually visible.