Edit views

The edit views play a significant role in recording new data or viewing existing data/objects. Concerning its structure, there is no substantial different compared to the traditional edit views of other applications. The edit view used by Effector is also built of captions, input fields and possibly graphical elements.

Location in the system

Its physical location is in the EditForm directory of the XML package.

The edit forms as views always appear embedded in a component/component tab. Owing to their operation, a DataDefinition and a BusinessObject belong to them. These objects will carry out among others the operations concerning the database.

Edit forms in the system

Operation

  • Query: : A query for an existing query record based on the fields listen in the BO.
  • Change: It updates the entire row of the BO based on the values in the entry fields. Every change automatically generates an entry in the FSYS_Log table.
  • Delete function: : It is a special feature, since there is no physical deletion in the system, so it will run as an update, where the value of the Deleted field changes to 1.
  • Insert: It is a two-step operation. To the possible attached components (typically a grid on the right of the EditForm, e.g. showing the participant of an event) get the ID of the newly entered record, thus work at a hundred percent, they have to get the unique ID of the data row behind the EditForm. What happens here is that after pressing the new button, an empty row gets inserted and displayed by the EditForm, and after pressing the Save button a simple Change will run. The defined DefaultValues (in BO or EditForm) will get into the row obviously at the same time as the insertion takes place. In such a case the value of the Deleted column will be 2, and after pressing the Save button it will change to 0.

Available references:

  • Filter: the values of the filters defined on the user interface.
  • Field: The business object’s own fields.
  • Special: Special constants.
  • Session: The particular parameters of the session at hand.

The specialty of filter handling

There is a special filter that is used only in case of EtheditForm, and that is automatically handled by the framework. This is under the alias JumpType among the incoming filters, and its value can be New or NoAction. In case of a new entry, there is always a Filter whose value is New. In case of other LinkScreens, either there is no such Filter, or its vale is NoAction.

Available features

  • Defining edit form
  • Defining handled data and controls

Defining edit forms

The definition of edit forms is done by setting the mandatory nodes below. Only one of each can be present. The descriptor’s root element is the Form node that includes the following:

  • The Caption node is used to set the caption of the EditForm, which currently does not appear on the interface.
  • DataDefinition: It is used to set see DataDefinition related to the EditForm. The DataDefinition specified here plays a role in filter management.
  • BusinessObject: It contains the business object related to the EditForm.
  • Rules: We can define EditForm-level rules; currently only the Readonly rule can be used with which we can set whether the EditForm is editable, we do not need to set this rule for each input field. However, this setting can be overwritten at each input field. More on setting rules in Rules.
  • ReportContentChangedOnValueChange: Optional logical switch. If the value of the node is true, and the Cancel button or the X button in the upper right corner is clicked, the system sends a warning that a field has been modified in the given window and inquires if we want it to be discarded. The default value is true.

Example:

<Form xmlns="http://effector.hu/schema/ns/editform">
    <Caption>Esemény módosítása</Caption>
    <DataDefinition>DDEventEdit</DataDefinition>
    <BusinessObject>BusinessObjectEvent</BusinessObject>
    <ControlGroup name="Név">
        <Control>
            <Type>Label</Type>
            <Name>Label_Name</Name>
            <Caption>Név</Caption>
            <Width>150</Width>
        </Control>
        <Control>
            <Type>TextBox</Type>
            <Name>TextBox_Name</Name>
            <Width>200</Width>
            <BindingName>Name</BindingName>
        </Control>
        </ControlGroup>

</Form>

Defining handled data and controls

Controls can be set using the Form/ControlGroup collection. Among the ControlGroup tags we can list the controls displayed next to each other. It has only one mandatory attribute:

  • name: It defines the name of the ControlGroup, which must be unique.

The controls to be displayed side by side have to be listed in the Control node of the ControlGroup collection. There can be any number of these (in the majority of cases however, we are talking about two elements: a label and an input field).

The nodes applicable for the definition of Controls are as follows:

  • Type: The type of the control. For instance, it can be Label, TextBox, etc.
  • Name: The unique name of the input field.
  • Width: The widths of the input field given in pixels.
  • BindingName: With its help, the database field and the input field can be connected; it contains the identifier of the field.

Except for the Width field, all the nodes listed above are mandatory!

The following settings can be used with the majority of controls (TextBox, Date, DateTime, ComboBox, QueryTextBox):

  • TouchValueList: : It offers the chance to simplify the selection of an element by predefining a few values in a box. it can be achieved by setting the TouchValueList attribute. This is a RuleValueType expression. For more information on Rules, see Rules. However, for a proper operation, the type attribute is needed to be set to Constant, while the column names returned by the query must be Key and Value. The usual [##Field.##], [##Filter.##], etc. references can be used here as well.

       <TouchValueList type="Constant">
           <![CDATA[SELECT TOP 10 CompanyID AS `Key`, Name AS Value FROM Company WITH(NOLOCK) WHERE deleted = 0]]>
       </TouchValueList>
    

Label

The special node needed for the definition of the label is the following:

  • Control/Caption: The caption, it has a meaning only in case of the Label type

TextBox

It allows for simple free text entry, where masking can be set as an option.

<Control>
    <Type>TextBox</Type>
</Control>

Optional nodes defined in the Control node:

  • Precision: In case of non-integer numbers, it specifies the number of decimal places (non-negative integer). Default value: 2
  • IsThousandsGrouped: In case of a number field, digit grouping can be switched on/off. Its possible values are true or false. By default, it is true.
  • UseHTMLEncode: It defines whether the value written in the field is stored in a database with HTML coding. By default, its value is false.
  • TextAlign: In case of a number field, the system aligns the values to the right by default, while in case of a text input field, values are aligned to the left. This attribute can assume the following values Left,Right or Default.
  • IsMultiline: It allows for the display of multiline text boxes. It is optional. For further customization, the following attributes can be set:

    • useHTMLEditor: A logical value, when it is true, an HTML editor appears.
    • htmlEditorToolbars An optional attribute. Here we can set the name of a toolbar set, which must be defined in the \core\config\ckeditor_config.js file. For instance: in case of a toolbar_Basic setting, the value of the attribute must be Basic.
    • useCodeMirror When a code fragment is displayed, it applies syntax highlighting.
    • IsResizable: It regulates the resizing of multiline text input fields. The default value is 'true'.
  • IsPassword: It is a logical value; if it is true, the characters entered are replaced with asterisks. It is optional.
  • Mask Here a basic masking option can be set. For instance: <Mask>99999999-9-99</Mask>. In the mask, the number 9 stands for digits, the letter A represents letters, while the * character can mean either a digit or a letter; the special characters among them will appear and be stored in the database table.

  • CharacterCounterType: If the database field it is of text type and its length is restricted, we can use this node to have the system display the allowed character counter. It is optional. Its possible values are:
    • None: It is not displayed (default value).
    • Count: It counts the characters entered.
    • Remaining: It deducts the number of characters entered from the maximum number of characters.
  • MaxLength: In case of text fields, we can limit the maximum number of characters to be entered.

QueryTextBox

We can set the value of this field by selecting from a list. Its works the same way as the ComboBox, except here the list of values displays a multicolumn list.

Nodes to be defined in the Control node:

  • Screen: It contains the name of the screen that appears when hitting the "..." button.
  • DataDefinition: It is the name of the DataDefinition attached as a datasource, which contains the data consistent with the attached field.
  • KeyColumnDefinition: The name of the column that contains the values.
  • ValueColumn: The name of the column that contains the text description belonging to the value.

Example:

<Control>
    <Type>QueryTextBox</Type>
    <Name>QueryTextBox_CompanyID</Name>
    <BindingName>CompanyID</BindingName>
    <Width>200</Width>
    <Screen>ScreenChoiseCompany</Screen>
    <DataDefinition>DataDefinitionCompanyEdit</DataDefinition>
    <KeyColumnDefinition>CompanyID</KeyColumnDefinition>
    <ValueColumn>Name</ValueColumn>
    <Required return="boolean" default="false" type="Constant">true</Required>
    <DefaultValue type="Constant" return="int" default="">[##Filter.Company_ID##]</DefaultValue>
</Control>

At this entry field we have to chance to fill in more fields at a time in the given business object with just one step. For this, we have to set the appropriate values in the ConnectedControl elements of the ConnectedControls collection. The value set is the ConnectedControl node is the name of the control displayed on the EditForm, while the column attribute is the name of the field selected from the query, which will be set as a value in the entry field specified in the ConnectedControl. If the type of the entry field referenced by the ConnectedControl is ComboBox or QueryTextBox, the column of the value to be displayed in the input field must be set as well, which can be done using the displayColumn attribute (it is also a column name from the query).

<ConnectedControls>
    <ConnectedControl column="Product_Type">TextBox_Product_Type</ConnectedControl>
    <ConnectedControl column="Part_Number">TextBox_Part_Number</ConnectedControl>
    <ConnectedControl column="EUR_MSRP">TextBox_Listaar</ConnectedControl>
    <ConnectedControl column="City_ID" displayColumn="CityName">ComboBox_City</ConnectedControl>
</ConnectedControls>

DateTime

This control is used for selecting date and time. The optional node with which we can regulate the values displayed in a drop-down list is the following:

  • Step: It regulates the step intervals in minutes.

Date

This control allows for date selection.

ComboBox

Using this control, we can select key-value pairs from a drop-down list.

<Control>
    <Type>ComboBox</Type>
    <Name>ComboBox_Priority</Name>
    <BindingName>Priority</BindingName>
    <Width>200</Width>
    <ComboDefinition>ComboPriority</ComboDefinition>
</Control>

In the above example, a list defined in the ComboDefinition.xml file under the name "ComboBox_Priority" will be displayed. The KeyColumn that will be saved in the database, and the ValueColumn that will be displayed are defined in the ComboDefinition.

A frequent use case is if we run a query for data in the lookup table that we need two extra nodes. This way we do not need to create a separate descriptor for each lookup group.

  • LookupFilterName: This attribute specifies for which filter should we substitute the data in the LookupFilterValue.
  • LookupFilterValue: This is the data to be substituted in.

Example:

ComboBox ComboBox_Eredmeny Eredmeny 200 ComboFixedValuesLookup GroupNum 3 true

HorizontalRule

This is a design element, there is no background logic attached to it. It draws a simple horizontal line that we can use for example for dividing the form.

CheckBox

It is a simple CheckBox type. The field behind it is a BIT type of field in the database.

InnerComponent

There is a possibility to display another component in the form (for instance one that has a table used for entering and displaying items pertaining to ordering).

<Control>
    <Type>InnerComponent</Type>
    <Name>InnerComponent_Products</Name>
</Control>

DocumentTextBox

It is an entry field used for selecting a document. The same nodes can be used as in case of the QueryTextBox.

<Control>
    <Type>DocumentTextBox</Type>
    <Name>DocumentTextBox_DocumentTextBox</Name>
    <BindingName>DocumentTextBox</BindingName>
    <Width>200</Width>
    <Screen>ScreenChoiseDocument</Screen>
    <DataDefinition>DataDefinitionDocumentEdit</DataDefinition>
    <KeyColumnDefinition>DocumentID</KeyColumnDefinition>
    <ValueColumn>OriginalFilename</ValueColumn>
    <DocumentObjectType>Egyeb</DocumentObjectType>
</Control>

Further nodes:

  • IsDocumentVersioningEnabled: Document versioning can be turned off with it in the given entry field. Its value may be true or false. Its default value is true, which means that the versioning is allowed. (In case of modification, Effector will enquire whether the used wants to save a new version.)
  • Screen: This setting works in a similar way as in case of the QueryTextBox, But here it is not mandatory. In the absence of this attribute, no selection can be made from the documents already existing in the system.
  • AllowedMIMETypes: : There is a possibility of restricting the types. MIME types should be listed separated by spaces.
  • FileSizeLimit: It is used for restricting the file size, its value is understood in MB.
  • DocumentObjectType: If the basis of the EditForm is not a BusinessObjectDocument, the DocumentObjectType node is needed to be set, as this node specifies the type of the document. In such a case the following attribute must be present in the BusinesObject XML file, in the definition of the given field:
    • isDocument: It specifies whether the given field is of document type. Its value may be true or false.

For example: <Field name="AlairtSzerzodes" isDocument="true"/>

There is a possibility to use in the rules certain properties of the document stored in the field allocated to the DocumentTextBox. These are the following:

  • [##Field.<<mező>>@NewVersion##]: Has a new version been recorded? Its value is true or false.
  • [##Field.<<mező>>@DocumentObjectType##]: It is the subtype of the attached document (subtype of the Document business object).
  • [##Field.<<mező>>@ValueChanged##]: Has the value of the field been modified?
  • [##Field.<<mező>>@FileName##]: It is the name of the attached file.

Button

It is a general button usually used for unique DLL references. Its configuration is similar to that of the Outer action buttons discussed under search fields (ControlPanel.Control).

The button is responsible for outer function calls and queries into a given class of a configured module. This can be set up with the Module node. This node will contain the technical details with which it will access the implementing class.

<Module classname="orn_Sample.SampleFunction">[##LocalProgramPath##]\Sample.dll</Module>

The value of the Module node is the name and fully qualified path of the module to be called. The system replaces the usable string [##LocalProgramPath##] with its own path. For example: (C:\Inetpub\wwwroot\Effector\bin). The Classname attribute defines the class in the module, which class has to implement a special interface (IEVIEditForm). The implement of this interface guarantees the proper operation.

The value of the Action node may be an arbitrary text which will be passed on as a parameter when calling upon an external DLL.

Extra nodes used for setting buttons:

  • CloseWindow: By setting the value of this node to false, we achieve that the EditForm will not be closed after saving. Its value can be true or false, by default it is true.
  • Icon: It is optional. By selecting from a predefined set of icons, we can place a pictogram before the caption of the button.

SaveButton

A button used for saving.

Extra nodes used for setting the Save button:

  • CloseWindow: By setting the value of this node to false, we achieve that the EditForm will not be closed after saving. Its value can be true or false, by default it is true.

    CancelButton

This button is used to cancel an action.

Extra nodes used for setting buttons:

  • CloseWindow: By setting the value of this node to false, we achieve that the EditForm will not be closed after saving. Its value can be true or false, by default it is true.

DeleteButton

Delete button.

Other options, rules and evaluations

Rules and evaluations: The following rules (nodes) can be set at each control, all of which are of RuleValueType. For further information on their configuration, please see Rules.

  • Required: It is used for setting the field as mandatory. As long as the set rule is not met (that is, its return value is false), the given object cannot be saved. For an enhanced visual representation, the same rule should be set for the label. In such a case, in case of true, the color of the label turns red, indicating that it is a required field.
  • WorkflowRequired: It is used for the same purpose as the Required node, with the exception that it takes effect if [##Field.Done##] == true, that is, if the current step of the process is set to done.
  • Readonly: Editability rule.
  • DefaultValue: The default value evaluated in case of newly entered objects only! The default rule set on the EditForm overwrites the rule set in the BusinessObject.
  • SessionValue: Here a constant or calculated value can be set, by which we achieve that an extra button appears on the right-hand side of the control. When pressing this button, the predefined value will appear in the input field. Typically, it is the name of the signed-in user themselves or their company, etc.
  • Visible: Visibility rule.
  • Tooltip: The Tooltip Label is a text type field of Rules.If it is not empty, the tooltip icon appears. If the cursor is hovering over the icon, the text is displayed.
  • Warning: A small, red exclamation mark in a circle is displayed, indicating a warning. Text can be added to this tooltip. It is basically a text type of RuleValueType, which appears when filled in.
  • ValidateRule: Validation rule. It does not allow saving the form until the condition defined here returns true; or in case of a non-Boolean return value, the empty message means that the value written in the control is valid.
  • ComputedValue: A computed field value, which constantly depends on the state of other fields.
    • When recomputing the value, it considers the fields referenced ([##Field.<Mezőnév>##]) in the evaluation. The modification of these will bring about some action; for furthur settings see the section on Recomputing.
    • Recomputing also affect other rules such as Visible, Readonly, etc.
  • ComputedValueList: A computed value list, which can be used in case of the ComboBox type whose content constantly depend on the condition of other fields.
    • When recomputing the value, it considers the fields referenced ([##Field.<Mezőnév>##]) in the evaluation. The modification of these will bring about some action; for further settings see the section on Recomputing.
    • Recomputing also affect other rules such as Visible, Readonly, etc.
  • ClearValueIfNotVisible: If an input field has a value written in it and the same field disappears as a result of a visibility rule run on it, the value written in the field will be deleted, if the value of this node is true. It has significance, when we do not want to save the value of an invisible field to that database. By default, this value is false.
  • LabelCssClass: The text of labels can be paired with a predefined CSS class.
  • PlaceHolder: Informative message written in empty input fields.
  • Recomputing: This node specifies the actions due to which the computed fields of the controls will be re computed. Its possible values are:

    • Always: Always, even when the window appears. Not in use.
    • OnValueChange: Only when a value is modified. It is the default setting.
    • TriggerOnRefresh: On refreshing the EditForm, it considers the value of the control modified, thus all rules and the ComputedValue referencing this field (where it is set) get executed.

Example:

<Recomputing>TriggerOnRefresh</Recomputing>

Special rules applicable in case of buttons

These controls are special in the sense that there is no label and obviously there is no BindingName node. In case of the buttons, two extra RuleValueType-s can be set at the buttons, which are interrelated. These two rules must be joined by the Question node.

Example:

<Control>
    <Type>SaveButton</Type>
    <Name>Save</Name>
    <ControlCaption>Save</ControlCaption>
    <Question type="OkCancel">
        <Condition type="SQL" return="boolean" default="false">select case when not exists(select documentconnectionid from documentconnection where boid = `[##Field.ProjectID##]` and botype = `project` and deleted = 0) then `true` else `false` end</Condition>
        <Message type="Constant" return="string" default="">Currently there is no document attached to the transaction. Do you want to save it this way? If yes, click the “OK”, if no, use the “Back` or “Cancel” buttons!</Message>
    </Question>
    <CloseWindow>false</CloseWindow>
    <Width>80</Width>
</Control>

Currently the Type attribute defined on the Question node can assume the OkCancel, Ok or Cancel values.

  • OkCancel: When the button is pressed, a window will open up containing the “OK” and “Cancel” buttons. On pressing the “OK” button, the action (save/delete/cancel) will take place, while on pressing the “Cancel” button, the action will not take place and editing can be continued.
  • Ok: Basically, an informative window is displayed before saving.
  • Cancel: It also displays an informative message, but it also prevents saving.

As mentioned above, there must be two RuleValueType-s under the Question node, one of which is Condition and the other is Message. The Condition regulates when the message should appear. In case of a true return value, a dialogue box displaying the value of the Message node will appear. The [##Field.{Fieldname}##] values can be used in both RuleValueType-s.

SignaturePad

This field is typically used for signature input, but we can also capture arbitrary drawings with it. We need to define a VARCHAR field under the BindingName node in the database, where the figure will be saved as a base64 encoded data.

  • Last update: 17 weeks 12 hours ago
  • Effector