There are times you are designing a form and realize that it will require the same fields/data to be shown on
multiple pages of the form. To avoid having the user reenter this data multiple times, you can take advantage of the 'AfterSetData' event to cascade the data through all the pages.
The implementation within this event can become even easier if the controls are named with following format, FieldName_Page#.
For example, lets say we require the same name at the top of the first 4 pages of a form. So we have have four controls named "Name_1", "Name_2", "Name_3", and "Name_4".
On the .NET side, the code would be as follows:
<MiCode(ControlScriptEventType.AfterSetData, "Name_1")> _ Public Sub Ctl_Name_1_AfterSetData(ByVal e As AfterSetDataEventArgs) 'Loop through the rest of the pages with the fields For i As Integer = 2 To 4 'Dynamically set the name of each field Dim name As String = "Name_" & i 'Get the control/field by name and set its value to Name_1's value _form.GetFormControlByName(name).Value = e.Control.Value Next End Sub
On the JavaScript side, the code would be as follows:
// Triggered when a field's value changes function MFAfterSetData(fieldName) { if (fieldName == "Name_1"){ var name = _form.getValue(fieldName); //Loop through the other fields on pages 2-4 for (i = 2; i <= 4; i++) { //Dynamically set the name of each field var newField = "Name_" + i; //Set the value of each field using the initial value from Name_1 _form.setValue(newField, name); } } }
So here we can see to add this code to the AfterSetData event for 'Name_1', and loop through the rest of the pages with this field (2-4) and set their value.