Recently, I come across arequirement where We need to set perform some operation before a user drilldown on field in a List Applet.
Vanilla provides a method Drilldown at applet level which can be captured.
There is no way specified in bookshelf whcih can determine that on which field drilldown has occured.
The problem here is if there are more than one drilldown list column in applet, click on any of them will triger the operatio we need to do.
We have thought to use Application Pre Navigate event but the Drilldown view could also be accessible from normal navigation. The operation ill get performed that tiem also. There will be an overhead code at Application level.
The WOrkaround to the problem is to use the SWEField property passed to the Applet PreInvoke propertyset gives the Id specific to the drilldown field . This value has a specific format which changes from list column to list column and record to record.
For example, in “INS Claims List Applet”:
Claim Number field’s first record on applet will have SWEField value “s_1_2_33_0” while the second will have “s_1_2_33_1” and so on
Assign To field’s first record on applet will have SWEField value “s_1_2_93_0” while the second will have “s_1_2_93_1”.
We can find Control Id for a list column and use the same for condition check as below.
function Applet_PreInvokeMethod (name, inputPropSet)
{
if(name == "Drilldown")
{
//Get SWEField property value
var SWEFieldParts = inputPropSet.GetProperty("SWEField");
// Find last occurrence of “_”
var sLastIndex = SWEFieldParts.lastIndexOf("_");
// Get the Control Id of a list column
var sControlId = SWEFieldParts.substring("0", sLastIndex);
if (sControlId == "s_1_2_33")
{
// Business logic
return ("CancelOperation");
}
}
return ("ContinueOperation");
}
Sharing is the Power