Skip to end of metadata
Go to start of metadata

This how-to will guide you through the process of adding a polymorph field to a screen section. The polymorph field is a special type of the input control, that changes its type (Textbox, ComboBox, CheckBox, etc.) according to the data.

1 - Create Fields in Underlying Entity

Polymorph field is represented in entity by a virtual field. Set its DataType property as Object. This will make sure, that when the column is dragged to a screen in the Screen Section Editor, MultiColumnAdapterFieldWrapper widget will be used.

Polymorph field behaviour is controlled by the content of another field. Such field has to be defined in the entity as well. There should be also some data fields, where the values will be stored in, but they are not necessary to make polymorph column runnable.

For the sake of the tutorial, let's define a virtual field Polymorph, control field will be Lookup Field DataType (creation of Lookup Field is not part of this tutorial) and content columns BooleanContentField, FloatContentField, GuidContentField and TextContentField. Data types of the content columns are discernible from their respective names.

Fields Overview

2 -  Add MultiColumnAdapterFieldWrapper to a Screen Section

In Screen Section Editor, simply drag previously defined virtual field to the section area. MultiColumnAdapterFieldWrapper will be added. Set name of control field in ControlMember property. In case of tutorial ControlMember property value is DataType. DataType is control field, which we have defined in previous step. 

Setting ControlMember Property

3 - Set up Control Constants

The behaviour of MultiColumnAdapterFieldWrapper is controlled by values in ControlMember. We need to set up these values as constants, that will be referenced in by wrapped input controls. In our case these constants mirror the possible values of DataType field. For our example we have defined constants UseBooleanField, UseFloatField, UseGuidField and UseTextField.

3 - Add Input Controls to the MultiColumnAdapterFieldWrapper

Drag data fields you intend to use to the MultiColumnAdapterField Wrapper. For each input control select constant and set it in MappingCondition property. If control field has such value, this field and input control will be used, otherwise it won't be visible. As shown in illustration, we have assigned UseTextField constant as MappingCondition for TextContentField input control.

Setting MappingCondition Property

You can drag multiple input controls to the wrapper. Since at maximum only one input control is supposed to be visible, you can arrange them in a column and wrapper itself will always set their Y property to the top. X property is taken from the input control unchanged.