Hello,
some elements like button have "clicked" attribute, where we can configure which request should be emited and which params should be passed to its handler. I try to use this feature, but it doesn't always work I expected.
For example, I created two new elements on Accounts Form Page:
- a button
- a lookup (with adding new record from list control enabled)
The first one emit crt.CreateRecordRequest with some params, the second one consists of two viewConfigDiff entries: one of them is a crt.ComboboxSearchTextAction and emits crt.CreateRecordFromLookupRequest
request with no params.
I tried to add my custom param to both elements. You can see it at the source code I've attached to this post. Then, I created two handlers, for handling both types of requests. In the result I can access to my custom param from button click handler (the alert with text "Hello" shows up), but not for the lookup create new record handler (the alert display "undefined").
define("Accounts_FormPage", /**SCHEMA_DEPS*/[]/**SCHEMA_DEPS*/, function/**SCHEMA_ARGS*/()/**SCHEMA_ARGS*/ {
return {
viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[
{
"operation": "insert",
"name": "ComboBox_xj333ko",
"values": {
"layoutConfig": {
"column": 1,
"row": 9,
"colSpan": 1,
"rowSpan": 1
},
"type": "crt.ComboBox",
"label": "$Resources.Strings.LookupAttribute_it9tgfm",
"labelPosition": "auto",
"control": "$LookupAttribute_it9tgfm",
"listActions": [],
"showValueAsLink": true,
"controlActions": []
},
"parentName": "SideAreaProfileContainer",
"propertyName": "items",
"index": 8
},
{
"operation": "insert",
"name": "addRecord_al7wl16",
"values": {
"code": "addRecord",
"type": "crt.ComboboxSearchTextAction",
"icon": "combobox-add-new",
"caption": "#ResourceString(addRecord_al7wl16_caption)#",
"clicked": {
"request": "crt.CreateRecordFromLookupRequest",
"params": {
"MyParameter": "Hello" // HERE
}
}
},
"parentName": "ComboBox_xj333ko",
"propertyName": "listActions",
"index": 0
},
{
"operation": "insert",
"name": "Button_93h456o",
"values": {
"layoutConfig": {
"column": 1,
"row": 10,
"colSpan": 1,
"rowSpan": 1
},
"type": "crt.Button",
"caption": "#ResourceString(Button_93h456o_caption)#",
"color": "default",
"disabled": false,
"size": "large",
"iconPosition": "only-text",
"visible": true,
"clicked": {
"request": "crt.CreateRecordRequest",
"params": {
"entityName": "Contact",
"defaultValues": [
{
"attributeName": "Age",
"value": null
}
],
"MyParameter": "Hello" // HERE
}
},
"clickMode": "default"
},
"parentName": "SideAreaProfileContainer",
"propertyName": "items",
"index": 9
}
]/**SCHEMA_VIEW_CONFIG_DIFF*/,
viewModelConfig: /**SCHEMA_VIEW_MODEL_CONFIG*/{
"attributes": {
"LookupAttribute_it9tgfm": {
"modelConfig": {
"path": "PDS.EvColumn1"
}
}
}
}/**SCHEMA_VIEW_MODEL_CONFIG*/,
modelConfig: /**SCHEMA_MODEL_CONFIG*/{}/**SCHEMA_MODEL_CONFIG*/,
handlers: /**SCHEMA_HANDLERS*/[
{
request: "crt.CreateRecordFromLookupRequest",
handler: async (request, next) => {
alert(request.MyParameter);
return next?.handle(request);
}
},
{
request: "crt.CreateRecordRequest",
handler: async (request, next) => {
alert(request.MyParameter);
return next?.handle(request);
}
}
]/**SCHEMA_HANDLERS*/,
converters: /**SCHEMA_CONVERTERS*/{}/**SCHEMA_CONVERTERS*/,
validators: /**SCHEMA_VALIDATORS*/{}/**SCHEMA_VALIDATORS*/
};
});
What can I do to make it's working? I use version 8.0.7 (.NET core).
---------------------
This alert displays after click on the button:
And this alert displays after trying to add new record from the lookup: