In property editing, {{UBIK}} supports defining a list of values for users to choose from instead of letting them enter arbitrary values. These are what we call selective list lists and selective list items.
== Static & dynamic versions ==
== Technical concept ==
The items of a dynamic selective list are instances of [[ContentClass]], also known as {{UBIK}} objects. So selecting picking a dynamic selective list item is just like selecting picking a query result item during editing a Guid/link property. In fact, properties having dynamic selective lists are Guid properties and the feature shares the same technology as the general [[UBIK_WinX_Client_Basics#Guid_editor|Guid property editing]]. In other words:
* The items are found through a filter query (specifically a DSL_QUERY);
* The display strings of the selected item are presented as the display value of the property;
* An object can have multiple parent objects. All those parents are taken into account in the item resolving process. Finding one dependency object along a parent lineage doesn't stop {{UBIK}} from checking the other lineages and this is why it's possible to have multiple dependency objects.
* It's also possible that the dependency object is the one being edited itself.
{{Hint|The property values found on multiple dependency objects are used in the follow-up querying process with a "logic or" relation. For example, if a string value "A" is found on one suitable dependency object and "B" on another, the query will return those dynamic selective list items having either "A" or "B" in their [[#Dynamic_selective_list_criteria|QUERY_CRITERION_NAME]]'d property values.}}
=== Dependency property values ===
The values are then used as inputs for the filter query (configured on the property being edited) according to the [[#Dynamic_selective_list_criteria|dynamic selective list criteria]]. From there on, the item resolving process becomes identical to [[Offline_Query_(UBIK_WinX)#Offline_query_criteria|offline querying]].
{{Hint|Specially speaking, the multiple values are used with a [[Offline_Query_(UBIK_WinX)#Value_range_criterion|value definition of "in a collection"]] during the querying process, effectively applying them in a "logic or" relation. Like in the [[Offline_Query_(UBIK_WinX)#Single_value_criterion|general offline query feature]], individual string values are compared using string contains whereas other types are compared using equality.}}
=== Dynamic selective list criteria ===
* DEPENDENCY_PROPERTY_NAME: The name of the property whose values determine the dynamic selective list items.
* QUERY_CRITERION_NAME: The name of the property that the resolved dependency property values should be filled into for querying.
* IS_MULTI_VALUE_STRING: (Optional) Whether the value of the dependency property should be interpreted as multiple string values separated by ";" . Defaults to false.
* IGNORE_NULL: (Optional) Whether null dependency property values should serve as a filtering criterion or be ignored. Defaults to false.