DropDownList
The new control is an alternative to the Control "ComboBox". The values of the control "DropDownList" can be provided as static datasource (data formatted as JSON Array inside your template) or by an external datasource e.g. by referencing a HFSqlServer list by linking to the URL or by providing an oData source as known of the ComboBox control.
static datasource:
<div id="technician"
data-win-control="HFWinJSCtrl.DropDownList"
data-win-options="{
label: 'Technician',
required: true,
optionLabel: 'Please select the responsible technician',
dataSource: [
{ name: 'Bauer, F', code: 'Bauer, F' },
{ name: 'Gruber, P', code: 'Gruber, P' },
{ name: 'Lanner, G', code: 'Lanner, G' },
{ name: 'Simon, R', code: '3521' },
{ name: 'Herbert, W', code: '123456789012' }
],
dataTextField: 'name',
dataValueField: 'code'
}"></div>
external datasource (URL):
<div id="tab1_dropdownlist"
data-win-control="HFWinJSCtrl.DropDownList"
data-win-options="{
label: 'DropDownList (HFSql Catalogs)',
list: true,
minLength: 3,
url: '/api/catalogs/Items?$select=Title,KatalogText,Streetname&%24orderby=Title,PLZ&%24top=1000',
defaultValue: 'Title1',
dataTextField: 'KatalogText',
dataValueField: 'Title',
template: '\#: Streetname # <small>(#: PLZ # #: Postort #)</small>',
valueTemplate: '\<strong>#: Streetname #</strong> <small>(#: PLZ # #: Postort #)</small>',
}"></div>
multilingual external datasource (URL):
<div id="tab1_dropdownlist"
data-win-control="HFWinJSCtrl.DropDownList"
data-win-options="{
label: 'DropDownList (HFSql Catalogs)',
list: true,
minLength: 3,
url: '/api/catalogs/Items?$select=Title,KatalogText,Streetname,Strassenname&%24orderby=Title,PLZ&%24top=1000',
i18nDataTextField: {
en: 'Streetname',
de: 'Strassenname',
default: 'Streetname'
},
dataValueField: 'Title',
template: '\#: Streetname # <small>(#: PLZ # #: Postort #)</small>',
valueTemplate: '\<strong>#: Streetname #</strong> <small>(#: PLZ # #: Postort #)</small>',
}"></div>
external datasource (OData):
<div id="liveOdataSource"
data-win-control="HFWinJSCtrl.DropDownList"
data-win-options="{
label: 'DropDownList with live OData source',
required: true,
dataTextField: 'KatalogText',
dataValueField: 'Title',
autoBind: false,
dataSource: {
type: 'odata',
transport: {
read: {
url:'https://example.com/liveOdataSource/?select=Title,KatalogText&orderby=KatalogText',
dataType: 'json',
headers: {
'Accept': 'application/json;odata=verbose'
}
}
}
}
}"></div>
FormControl Options
Options of the kendo component are also available. read more
dataTextField - required
Define the key of the key-value pair.
dataTextField: 'name'
string
dataValueField - required
Define the value of the key-value pair.
dataValueField: 'code'
string
autoBind
Controls whether to bind the control to the data source on initialization. Use false if you use in multiple controls the same data source. This reduces server requests.
autoBind: false
boolean
true
checkValueInitially
Stored values gets initially checked if they are contained in the data source that is defined on the control. In certain scenarios this is not desireable.
checkValueInitially: true
boolean
true
dataSource
Provide the data for the drop down selection formatted like a JSON Array inside your template
dataSource: [{name: 'Bauer, F', code: 'Bauer, F'}, {name: 'Gruber, P', code: 'Gruber,P'}]
json pseudo array
defaultValue
Define the value selected in newly created forms. Note: This must be the appropiate dataValueField value. A custom code function can be used to set defaultValue.
defaultValue: 'Title1',
string | function
function() => string
disabled
Set "true" whenever the DropDownList should be disabled.
disabled: true
boolean
doNotCopy
Set "true" whenever the field should get deleted if form is copied.
doNotCopy: true
boolean
formControlMapping
Define a mapping object to copy fields from the selecetd dataItem to given form controls. more infos
{ example_id: 'example_key' }
IFormControlMapping
i18nDataTextField
Use the i18nDataTextfield instead of teh dataTextfield to use multilingual catalogs in addition to the translation.json file.
{ en: 'Streetname', de: 'Strassenname', default: ‘Streetname' }
{ default: string, [langCode: string]: string }
list
Set this property to "true" if data connected with this control should be a sorting/filtering/grouping option on the listpage, is used in template objects (eg. the listTemplate) or it should show up in admin ui listings.
list: true
boolean
listOptions
Set additional options for controls with list equals true. E.g. set custom label for filter/sort/group dialogs or hide them complettely.
listOptions: {...}
{ dialogText: string, dialogHide: boolean }
minLength
The minimum number of characters the user needs to type before a search is performed. Set a higher value than 1 whenever the search could match a lot of items.
minLength: 3
number
onChanged
Call a pre-defined JS-method to do something when the status of the control changes
onChanged: HFFormdefinition.Namespace.Method
function
function(data: { value: string, text: string }) => void
optionLabel
Define a placeholder text for the DropDownList.
optionLabel: 'Please select ...'
string
optionTemplate
Define a placeholder template for the DropDownList.
optionTemplate: 'label'
string
persistent
The value "user" sets the initial selected value of the DropDownList to the value of the previous form item of the current user and overwrites any defaultValue.
persistent: 'user'
'user'
template
Define the formatting of the DropDownList values for display e.g. combining one or more columns of the datasource for single selection. Important: Have to return string inside a wrapping element.
template: '#: Streetname # (#: PLZ # #: Postort #)',
string | function
function() => string
tooltip
Write a comment to provide further information about the field. A question mark will then be shown within the label and with a click/tap on it, the information will occur.
tooltip: 'Please indicate at least one cause of damage.'
string
tooltipTemplate
Write an id of a html container to provide further information about the field. A question mark will then be shown within the label and with a click/tap on it, the content of the container will occur.
tooltipTemplate: 'example_control_tooltip'
string
typeAhead
Enable/Disable filter for DropDownList.
typeAhead: false,
boolean
true
url
The URL must be a HFSql server relative URL. For instance, the oData link to a HFSql server list.
url: '/api/catalogs/Items?$select=Title,KatalogText&$orderby=Title'
string
valueMapperDelay
Add a delay to the Kendo ValueMapper. Useful for very large catalogs.
valueMapperDelay: true
boolean
valueTemplate
Define the formatting of the DropDownList values for saved value e.g. combining one or more columns of the datasource for single selection
valueTemplate: '#: Streetname # (#: PLZ # #: Postort #)'
string
visiting
Set "true" whenever the form element should be marked as "visited" when the user has clicked or tapped at the form element.field.
visiting: true
boolean
listOptions Object
dialogText
Set custom label for filter/sort/group dialogs.
dialogText: 'Display Text'
string
Please follow the conventions to build an oData Source Link by considering the following documentations:
formControlMapping
The mapping objects consists of keys which are the form control id's to copy to and the value which can be a data source key or an object with the data source key and a format function.
Every value change the specified data source entries are copied to the given form controls.
<div id="exmaple_mapping"
data-win-control="HFWinJSCtrl.DropDownList"
data-win-options="{
label: 'Example',
url: '/api/catalogs/Example?$select=Text,Value,Description,Date',
dataTextField: 'Text',
dataValueField: 'Value',
formControlMapping: {
description: 'Description',
date_picker: {
key: 'Date',
callback: HFFormdefinition.ExampleNamespace.formatDateFunc
}
}
}">
</div>
type FormControlMappingType = {
key: string;
callback: (dataItem: any, dataKey: string) => any;
};
interface IFormControlMapping {
[id: string]: string | FormControlMappingType;
}
Stored data
<div id="technician"
data-win-control="HFWinJSCtrl.DropDownList"
data-win-options="{
label: 'Technician',
dataSource: [
{ name: 'Bauer, F', code: '1' },
{ name: 'Gruber, P', code: '2' },
{ name: 'Lanner, G', code: '3' },
{ name: 'Simon, R', code: '4' },
{ name: 'Herbert, W', code: '5' }
],
dataTextField: 'name',
dataValueField: 'code',
required: true
}"></div>
For each DropDownList inside your forms there are two value pairs of stored data:
First the information for the DropDownList itself
{
"id": "technician",
"value": "3521"
}
and second for the selected value:
{
"id": "technician_HFDropDownListText",
"value": "Simon, R"
}