Hi Eric,
As you may notice, the Form Grid and List Grid are designed to work with simple form only. Which mean a form only have a single load and store binder at the form level. Although it does not stop you to use with a form with subform, grid inside the popup form, but the storing behavior is actually incorrect.
Let me explain to you how Form/List Grid handle the data submission of its popup form, Form/List Grid will internally change the load and store binder of the Popup Form to an internal plugin called JsonFormBinder. The JsonFormBinder will convert the collected data to a JSON and the JSON will store to a hidden field of each row of the Form Grid. When the main form is submitted, the Form Grid element will parse the JSON of each rows and convert it to FormRowSet object to be handled by the Store binder of the Form Grid.
Due to the JsonFormBinder is only apply to the Form object, if the Form has other child elements (such as subform or another form grid) which have its own store binder, those store binder will be executed directly when the popup form is submitted. This also mean that all the data collected in a popup form by a sub form or grid element which has a store binder will store directly to database.
For example:
- Main Form has a Form Grid 1 (Mapped to Form B)
All the data collected in Form B will only stored when Main Form is submitted. It is temporary store in hidden field of each grid row.
- Let said Form B in the previous example has another Form Grid 2 (Mapped to Form C)
The data of Form C will directly store to database once Form B is submitted. But, other Form B data will still submit together with Main Form data. This behavior is incorrect as it will create dummy data in Form C table if the user end up did not submit the Main Form.
The Subform Repeater is working another way. It actually duplicate the same form and prefixed it with row number, so everything you see in the screen will still keep there until user press submit button. All the submitted data will still handled by all the binders in the repeater form itself.
It is in our product roadmap to solve this complex data storing algorithm of Form Grid and List Grid.
Best regards.