Control: Multi-listbox

 Show all Hide all

List box control with multiple selectable values

Start value: Multiple comma(,)-separated values controls which list items that are initially selected.
Return value: Multiple comma(,)-separated values of selected list items.

Control container: NewEdit

Supported in: NewEdit Parameter page Multirow

SQL

SQL Call: Retrieve values

SQL-statement that fills the control with possible values.
Supports custom errors: No
May modify database: No

Resultset: Values

Values for control.
Repeat mode: repeated exactly once
Row count: zero or more rows

Columns:

<column with ordinal 1> mandatory string
Possible values in list (also displayed values if column at ordinal 2 is omitted)
<column with ordinal 2> optional string
Displayed values in list (if column is omitted values from column at ordinal 1 is used)
InfoHtml optional string
Extra informative HTML to display below the field. This is not supported in multirows.
InfoText optional string
Extra informative text to display below the field. This is not supported in multirows.

Default value

SQL Call: Default value

Retrieves the default value for the control.
Supports custom errors: No
May modify database: No

Resultset: Default value

Repeat mode: repeated exactly once
Row count: exactly one row

Columns:

<column with ordinal 1> mandatory string
The default value

Validation

SQL Call: Validation

Performs field validation when the user leaves the field or one of its dependencies is changed. This call is only made if there is a field validation of type SQL set for the field info.
Supports custom errors: No
May modify database: No

Parameters:

@Value mandatory string
The value of the field, the procedure will not be called if value is NULL.

Resultset: Validation messages

Repeat mode: repeated zero or one time
Row count: zero or one row

Columns:

Error optional string
Error message to display. Blocks the user from saving.
Info optional string
Informative message to display. Does not block saving.

Examples

Multilistbox procedure

Example multilistbox procedure. As you can see, the procedure is identical to that of a dropdown and should be named accordingly. This way the field type can be changed without having to rename the procedure.

CREATE PROCEDURE Example.MultiListBoxTable_Dropdown
AS
BEGIN

	SELECT
		MLBT.MultiListBoxTableId,
		MLBT.MultiListBoxTableName
	FROM
		Example.MultiListBoxTable MLBT
	ORDER BY
		2

END

Best practice

Name of stored procedure

The name depends on the usage. If the control is used to retrieve values from a lookup table then the procedure should be named "<Schema>.<LookupTable>Dropdown". If it is not and the values are not directly linked to rows in a table or the functionality is specific for the current field (say for instance a choice between each of the last six years) then the procedure should be named "<Schema>.<Table><Field>_Dropdown".

The suffix "_Dropdown" should be used since the control works exactly like a dropdown regarding result sets from the SQL call and naming the procedure in that way enables you to change field type without renaming the procedure.

Always use an explicit ORDER BY

For stable and predictable behaviour, always use an explicit ORDER BY clause.