ComboBox
The values of the control "ComboBox" can be provided as static datasource (data formatted like a Json Array inside your template) or in case of a external datasource e.g. by referencing a SharePoint list by linking to the URL or by providing a oData source.
static datasource:
<div id="technician"
data-win-control="HFWinJSCtrl.ComboBox"
data-win-options="{
label: 'Technician',
required: true,
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_combobox_liste"
data-win-control="HFWinJSCtrl.ComboBox"
data-win-options="{
label: 'ComboBox (HFSql Catalogs)',
list: true,
minLength: 3,
url: '/api/catalogs/CatalogName?$select=Title,KatalogText,PLZ,Postort&%24orderby=Title,PLZ&%24top=1000',
template: HFFormdefinition.Namespace.setStreetTemplate,
dataTextField: 'KatalogText',
dataValueField: 'Title'
}"></div>
multilingual external datasource (URL):
<div id="tab1_combobox_liste"
data-win-control="HFWinJSCtrl.ComboBox"
data-win-options="{
label: 'ComboBox (HFSql Catalogs)',
list: true,
minLength: 3,
template: HFFormdefinition.Namespace.setStreetTemplate,
url: '/api/catalogs/Items?$select=Title,KatalogText,Streetname,Strassenname&%24orderby=Title,PLZ&%24top=1000',
i18nDataTextField: {
en: 'Streetname',
de: 'Strassenname',
default: 'Streetname'
},
dataValueField: 'Title'
}"></div>
external datasource (oData):
<div id="liveOdataSource"
data-win-control="HFWinJSCtrl.ComboBox"
data-win-options="{
label: 'Combobox 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 text of the key-value pair.
dataTextField: 'name'
string
dataValueField - required
Define the value of the key-value pair.
dataValueField: 'code'
string
anytext
Set "false" whenever free text input should be prevented.
anytext: 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 ComboBox 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 the dataTextfield to use multilingual catalogs in addition to the translation.json file.
{ en: 'Streetname', de: 'PLZ', 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
persistent
The value "user" sets the initial selected value of the ComboBox to the value of the previous form item of the current user and overwrites any defaultValue.
persistent: 'user'
'user'
placeholder
Define a placeholder text for the ComboBox.
placeholder: 'Please select ...'
string
template
Call a pre-defined JS-method for formatting the ComboBox values e.g. combining one or more columns of the datasource for single selection. Important: Have to return string inside a wrapping element.
template: HFFormdefinition.Namespace.setStreetTemplate
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
url
The URL must be a server relative SharePoint URL. For instance, the oData link to a SharePoint list.
url: '/_api/web/lists/getbytitle('SP')/Items?$select=Title&$orderby=Title'
string
valueMapperDelay
Add a delay to the Kendo ValueMapper. Useful for very large catalogs.
valueMapperDelay: true
boolean
visiting
Set "true" whenever the form element should be marked as "visited" when the user has clicked or tapped at the form 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.ComboBox"
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.ComboBox"
data-win-options="{
label: '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',
required: true
}"></div>
For each ComboBox inside your forms there are two value pairs of stored data:
First the information for the ComboBox itself
{
"id": "technician",
"value": "3521"
}
and second for the selected value:
{
"id": "technician_HFComboText",
"value": "Simon, R"
}