LookupAttribute
An Attribute for a lookup field. Also has all the methods available in Attribute.
Use form.attribute to get an instance of this class.
getLookupValue
attribute.getLookupValue(): RecordReference | null;
Gets the first value for the lookup in RecordReference format.
getLookupValueList
attribute.getLookupValueList(): RecordReference[];
Returns an array of lookup values for the field. If the field is null, an empty array is returned.
getValueId
attribute.getValueId(): string | null
Gets the id
value of the field.
getValueEntityName
attribute.getValueEntityName(): string | null
Gets the entityType value of the field.
getValueName
attribute.getValueName(): string | null
Gets the primary name attribute value of the target entity.
setSingleValue
attribute.setSingleValue(val: RecordReference | null): void;
attribute.setSingleValue(id: string | null, logicalName: string, name: string): void;
Sets the lookup field to the single specified value.
addPreSearchFilter
attribute.addPreSearchFilter(presearchCallback: () => string | null): void
Call this method in the form on load event to register a callback to filter the lookup.
⚠️ This method does not allow link-entity based filters. For those, use addPreSearchCustomViewFilter and disable the view selector.
function formOnLoad_addPreSearchFilterSample(e) {
const form = Hsl.form(e);
const accountLookup = form.attribute('hsl_accountid');
accountLookup.addPreSearchFilter(() => {
const projectType = form.attribute('hsl_projecttypecode').getValue();
if (projectType === null)
return null; // No filter
return `<filter><condition attribute='hsl_projecttypecode' operator='eq' value='${Hsl.xmlEncode(projectType)}' /></filter>`;
});
}
addPreSearchCustomViewFilter
attribute.addPreSearchCustomViewFilter(presearchCallback: () => string | null, options?: CustomViewFilterOptions)
This will be called anytime the user opens the lookup control to select a record. If you want the user to be restricted to only records in the view, go to the properties for the controls for this attribute in this form editor and select:
- Set View Selector = Off
- Disable most recently used items for this field = Checked
function formOnLoad_addPreSearchCustomViewFilter(e) {
const form = Hsl.form(e);
const accountLookup = form.attribute('hsl_accountid');
accountLookup.addPreSearchCustomViewFilter(() => {
return `<link-entity name="territory" from="territoryid" to="territoryid" link-type="inner" alias="territory">
<link-entity name="systemuser" from="systemuserid" to="managerid" link-type="inner" alias="territorymanager">
<filter type="and">
<condition attribute="businessunitid" operator="eq-businessid" />
</filter>
</link-entity>
</link-entity>`;
});
}
addCustomView
attribute.addCustomView(viewId: Guid,
entityName: string,
viewDisplayName: string,
fetchXml: string,
layoutXml: string,
makeDefault: boolean): void
Adds a custom view for each control for this attribute.
addDependency
attribute.addDependency(_opts: AddDependencyOptions)
interface AddDependencyOptions {
/** The attributes this filter depends on */
dependOnAttributes: string[];
/** Callback function made when the user opens a lookup control. Should return filter xml filtering the attribute. */
fetchFilterCallback(): string | null;
/** Automatically set this attribute to null if one of the dependsOnAttributes changes. Default: true */
clearOnDependencyChange?: boolean;
/** Whether to disable this attribute if any of the dependsOnAttributes is null. Default: true */
disableOnNullDependency?: boolean;
}
Adds a view filter dependent on particular attributes.
function formOnLoad_addLookupDependencySample(e) {
const form = Hsl.form(e);
const accountLookup = form.attribute('hsl_accountid');
accountLookup.addDependency({
dependOnAttributes: ['hsl_projecttypecode'],
fetchFilterCallback() {
const projectType = form.attribute('hsl_projecttypecode').getValue();
if (projectType === null) {
return `<filter><condition attribute='hsl_projecttypecode' operator='null' /></filter>`;
}
return `<filter><condition attribute='hsl_projecttypecode' operator='eq' value='${Hsl.xmlEncode(projectType)}' /></filter>`;
},
disableOnNullDependency: false,
});
}