Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

Reset a single field in repeated Subform...I cannot seem to reference it....

Avatar

Level 3

Good morning

 

I am trying to reset ONE field in a repeating subform.  I don't want to hide the instances of the subform for this action, or re-set the entire form.  

The field I wish to reset is form1.Main.sfOMKT.Table1.Row3.sfFigs.numFigures and sfOMKT is the repeating subform which it lives in. 

 

Obviously this works great for the first instance: xfa.host.resetData("form1.Main.sfOMKT.Table1.Row3.sfFigs.numFigures");

But no matter how much I read I cannot grasp the referencing thing...

 

Would anyone be able to help?

1 Accepted Solution

Avatar

Correct answer by
Employee

I am assuming by resetting the field, you want to set its value to null or empty.

Then try this script.

 

var subforms = this.resolveNodes(" form1.Main.sfOMKT[*]");

for(var i =0; i<subforms.length;i++)
{
subforms.item(i).Table1.Row3.sfFigs.numFigures.rawValue = ""; }

View solution in original post

1 Reply

Avatar

Correct answer by
Employee

I am assuming by resetting the field, you want to set its value to null or empty.

Then try this script.

 

var subforms = this.resolveNodes(" form1.Main.sfOMKT[*]");

for(var i =0; i<subforms.length;i++)
{
subforms.item(i).Table1.Row3.sfFigs.numFigures.rawValue = ""; }

Avatar

Level 5

You need to specify the instance's index of the repeating subform to target. 

so if the action is triggered by an event linked to a cell in the same row as the field to be reset,you could do something like this:

// determine the index of the targeted instance of the repeating form

var TargetIndex = this.parent.parent.parent.index; 

// create the string representing the SOM of the targeted field

var TargetCell = "form1.Main.sfOMKT["+TargetIndex+"].Table1.Row3.sfFigs.numFigures";

// reset the value of the targeted cell

xfa.host.resetData(TargetCell);

Avatar

Level 10

Hi,

 

you can use the resolveNodes() method, to reference multiple instances in an object.

Here's an example. You're creating a node list for all instances of sf0MKT named oSubforms. 

Then you're using a for loop to process every node in the list.

var oSubfoms = form1.Main.resolveNodes("sfOMKT[*]),
    i = 0;

for (i; i < oSubfoms.length; i += 1) {
    var oNode = oSubform.item(i);
    oNode.Table1.Row3.sfFigs.numFigures.rawValue = null;
}

Avatar

Level 3

Thank you so much!!!  I don't know where I would be without this forum.

For a self starter I have made some pretty decent bespoke forms for my organisation largely thanks to the help of you guys here when I hit a roadblock.

 

I really want to understand how you know to use stuff like this 

for (i; i < oSubfoms.length; i += 1) {

Can you recommend anything for a total beginner for JS?  Course, reading material?  I read a LOT of stuff and sometimes can work it out for myself, but I lack the basic knowledge so I don't think I will ever progress until I get that base....