Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Looping through cell in table

Avatar

Level 4

Hi all!

I have been digging but can't find my answer.  I have a table that you can add rows to.  In the same cell in each row I have to validate if the number in the field starts with a 4 or 5 ( the number is a total of 6 digits long).  I have java script that validates the 4 or 5.  but I need to loop through all the rows for that cell. Right now just validates on the first row.

Help!

Thank you!

Jodi

var Grant = Main.PreApproved.Table1.Row1.Fund.rawValue

var GrantFund = Grant.charAt(0)


if  (GrantFund == 4 || GrantFund == 5).......

1 Accepted Solution

Avatar

Correct answer by
Level 10

Hi,

If you table has only one Row object that repeats (as opposed to a Row1, Row2, ...) you should be able to use;

 

var rows = Main.PreApproved.Table1.resolveNodes("Row1[*]");

for (var i = 0; i < rows.length; i++) {

    var row = rows.item(i);

    var GrantFund = row.Fund.isNull ? 0 : row.Fund.rawValue.charAt(0);

    if  (GrantFund == 4 || GrantFund == 5) {

        //...

    }

}

 

Regards

Bruce

View solution in original post

12 Replies

Avatar

Correct answer by
Level 10

Hi,

If you table has only one Row object that repeats (as opposed to a Row1, Row2, ...) you should be able to use;

 

var rows = Main.PreApproved.Table1.resolveNodes("Row1[*]");

for (var i = 0; i < rows.length; i++) {

    var row = rows.item(i);

    var GrantFund = row.Fund.isNull ? 0 : row.Fund.rawValue.charAt(0);

    if  (GrantFund == 4 || GrantFund == 5) {

        //...

    }

}

 

Regards

Bruce

Avatar

Level 4

Awesome!  Thank you Bruce!  I will try it tomorrow (too many meetings today )

When I was lookoing at the Javascript I would get confused byt the (var i = 1; i< rows.lenght; i++) part. 
I never understood how to to it or what it meant.  Thank you again!

I will let you know how it goes!

Jodi

Avatar

Level 4

Bruce you are the man!!!  It worked!

Thank you so much for the help!
Have a great Thanksgiving!

Jodi

Avatar

Level 4

Hey Bruce,

Since you were so helpful last time.  Do you know how you would loop through the subform that the table is in?  I have a button that duplicates the subform so the users can add additional information.  So I need to look through each duplicated subform and also check the cell in the row.

Any ideas?
if you need more info let me know

Jodi

Avatar

Level 4

Hey Bruce,

Since you were so helpful last time.  Do you know how you would loop through the subform that the table is in?  I have a button that duplicates the subform so the users can add additional information.  So I need to look through each duplicated subform and also check the cell in the row.

Any ideas?
if you need more info let me know

Jodi

Avatar

Level 10

Hi Jodi,

Should be something like;

var tables = Main.resolveNodes("PreApproved[*]");

for (var j = 0; j < tables.length; j++) {

    var table = tables.item(j);

    var rows = table.Table1.resolveNodes("Row1[*]");

    for (var i = 0; i < rows.length; i++) {

        var row = rows.item(i);

        var GrantFund = row.Fund.isNull ? 0 : row.Fund.rawValue.charAt(0);

        if  (GrantFund == 4 || GrantFund == 5) {

            //...

        }

    }

}

 

Could be some changes you need to make depending on your form structure.  If you can't get it to work upload your form to Dropbox, or Google Docs (or somewhere) and post a link to it here.

Regards

Bruce

Avatar

Level 4

Hi Bruce!  I know it has been a long time but things around here don't always  move fast    I am finally trying to put in this looping through subforms but I am not having much luck.  I have uploaded the doc to google docs.  Here is the link.  If you can help that would be awesome!  Thank you!

Jodi

AwardPaymentAuthorization12_2015_2_workingcopy.pdf - Google Drive

Avatar

Level 10

Hi Jodi,

Have a look at this version, https://sites.google.com/site/livecycledesignercookbooks/home/AwardPaymentAuthorization12_2015_2_wor...

Seems the repeating subform is Awardees (not PreApproved?), and then within that you need to repeat over Table2 (not Table1).

Also I assume GFY is meant to be row.Fund.rawValue (not GrantFund?)

Not sure I got all this right, if not give me a description of what the code is meant to do.

Regards

Bruce

Avatar

Level 4

Hey Bruce!

You are awesome! 

What it is supposed to do is check the Fund field for each person that is added.  If any one of the people have a fund that has a 4 or 5 as the first number, then the whole form needs to be sent to the grants and contracts office first for approval.  when Grants and contracts approves it they will then sent to Payroll.

If none of the fund fields have a 4 or 5 then the form goes directly to payroll.

Right now it seems to want to send an email for each of the form fields, vs. emailing just once.

Does that make sense?

You help has been invaluable!

Thanks!

Jodi

Avatar

Level 10

Hi Jodi,

Ok, I think I see what is happening, and each campus has a different Grants and Contracts?  Have a look at this update, https://sites.google.com/site/livecycledesignercookbooks/home/AwardPaymentAuthorization12_2015_2.pdf..., I've taken all the emails generation stuff out of the loop so it'll happen once all the mandatory checks have been made.

Hope it's getting closer.

Regards

Bruce

Avatar

Level 4

Hey Bruce!

Long time no talk! Hope you are doing well!  I have another repeating issue that I can't get to work

I once again am trying to validate through a repeating subform, but this is just the subform.  I have tried to manipulate the different code you sent me but I am just getting validation on the first subform not the repeated ones.  What am I missing?
Thank you for all your help!

Jodi

Gift Transmital Form_2.pdf - Google Drive

Avatar

Level 4

Hey Bruce!

I actually figured it out!  I used Loop Through Subform Instances  and used this code.

expenseReport.#subform[0].validate2::click – (JavaScript, client) 
var vItems = expenses.expense.all; 
for(i=0; i<vItems.length; i++) 

    if (vItems.item(i).description.rawValue == null) 
    { 
        xfa.host.messageBox("Missing description field"); 
        break; 
    } 

}

Took me a few tries to get it to work but it did Thanks!

Jodi