Multi-listbox

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.
Supported in: NewEdit Parameter page Multirow

Appearance

alt text
To select multiple rows, hold down shift or ctrl and click.

SQL

SQL Call: Get options

Returns the options.

May modify database: No

Resultset: Options

The options users can choose from.

Table count: 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)
HideUnlessCurrent optional bit
This column indicates that the value should only be shown in the list if it is the currently chosen value.
OptionGroup optional string

When using this column, all options with the same OptionGroup will be grouped together under a heading labeled with the OptionGroup value.

Default value

SQL Call: Default value

Retrieves the default value for the control.

May modify database: No

Resultset: Default value

Table count: repeated exactly once
Row count: exactly one row
Columns
<column with ordinal 1> mandatory string
The default value

Validation

SQL Call: Validation

This call is only made if there is a field validation set for the field info and the field has any content.

Live Validation

Performs field validation when the user leaves the field or one of its dependencies is changed, initial values set by default value and initial values in edit-mode are not validated.

Save Validation

When saving the validation runs server side if the field value has changed. A field value is considered changed if in new mode the value is anything other than NULL. In edit mode it is considered changed if it has a value that was not returned by the GetEditFields procedure.

May modify database: No

Parameters

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

Resultset: Validation messages (optional)

Table count: 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.
Warning optional string
Warning 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

Always use an explicit ORDER BY

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

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.