Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.
SOLVED

Click event of a button only delets one subform and after doesn`t work

Avatar

Level 2

The project is done in Adobe LiveCycle Designer in JavaScript.

I have an add button which adds one instance of a subform and a delete button which deletes one instance of a subform.

When i click delete it deletes only one subform. If i click it again it does nothing...What should i do ?

//form1.tabelAnexa.Row[1].veg2.veg1.prod.instanceManager.removeInstance(form1.tabelAnexa.Row[1].veg2.veg1.prod.instanceManager.count-1);

_veg1.removeInstance(1);

var rd = frmO.caption.value.resolveNode("#text").value;;

if (frmO.rawValue == null){

app.alert("Mai intai trebuie sa completati campul: " + rd + "!");

xfa.host.setFocus(frmO);

xfa.host.openList(frmO);

}

else{

/*

   This button will Remove the current instance of the repeating subform or table row.

   bCalc: Flag - true if the removed instance might be referenced by other calculations, otherwise false.

   message: The error message displayed.

*/

var bCalc = true;

var message = "Ați atins numărul minim de elemente permise.\n\nVor fi sterse datele introduse in campurile acestui element!";

// DO NOT MODIFY THE CODE BEYOND THIS POINT - 10.0.2.20120224.1.869952.867557 - Subform_Instance_Controls_IRM.xfo.p4

var oWrapper = this.parent.parent; // The outer subform built in to the object, enclosing the button group.

var oTargetSubform = oWrapper.parent; // The subform or table row the controls are intended to manipulate.

var oManager = oTargetSubform.instanceManager; // Get the instance manager.

var nMinCount = oManager.occur.min; // Get the minimum number of subform occurrences allowed.

var nSubCount = oManager.count; // Get the current number of instances.

// Proceed if the minimum number of subform occurrences has not been reached.

if (nSubCount > nMinCount) {

// Invoke the Instance Manager.

oManager.removeInstance(oTargetSubform.index);

// Fire the form calculations.

if (bCalc == true) {

// Execute all the form calculations.

xfa.form.recalculate(1);

}

} else {

var raspuns = xfa.host.messageBox(message,"Remove Item",2,2);

if (raspuns == 4){

_prod.setInstances(0);

_prod.setInstances(1);

}

}

// END OF DO NOT MODIFY

}

1 Accepted Solution

Avatar

Correct answer by
Level 10

Hi there,

to correctly remove a subform with a button inside it with additional code, you must make sure to remove that subform at the end of all code.

What is happening here, is that you have a button within a subform, and it has numerous lines of code, on the first line it removes itself from the form... just by removing its instance the code cannot continue to execute because the object doesn't exist anymore...

So make sure to execute all of your code that does not include the object itself and once everything is done, only then you can remove the parent's instance of the object.

I hope this will help

View solution in original post

3 Replies

Avatar

Level 4

Check the minimum and maximum count for the subform to make sure they are set correctly.

Avatar

Correct answer by
Level 10

Hi there,

to correctly remove a subform with a button inside it with additional code, you must make sure to remove that subform at the end of all code.

What is happening here, is that you have a button within a subform, and it has numerous lines of code, on the first line it removes itself from the form... just by removing its instance the code cannot continue to execute because the object doesn't exist anymore...

So make sure to execute all of your code that does not include the object itself and once everything is done, only then you can remove the parent's instance of the object.

I hope this will help

Avatar

Level 2

Thanks it works, i put the remove instance code at the end and it works