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

conditional data binding question

Avatar

Level 2

Hi, guys

I'm new bee in LiveCycle Designer. I got questions about conditional data binding question in adobe Live Cycle  designer ES3.

My XML files structure is like following:

<item>

     <Name>name1</Name>

     <Type>A</Type>

     <Amount>10</Amount>

</item>

<item>

     <Name>name2</Name>

     <Type>B</Type>

     <Amount>20</Amount>

</item>

<item>

     <Name>name3</Name>

     <Type>B</Type>

     <Amount>30</Amount>

</item>

........

And now I want to display items only with type= A . How can I get this conditional data binding?

I've already use SOM predicates in item's Data Binding expression like this:  $.item.[Type=='A']   but it return syntax error.

BR, PiPi Li

1 Accepted Solution

Avatar

Correct answer by
Level 10

Hi,

When you use $.item.[Type=='A'], that is with square brackets then the expression is expected to be a FromCalc expression, which means you need to use double quotes, i.e. $.item.[Type=="A"].  The JavaScript equivalent would be $.item.(Type.value=='B') ... using the round brackets.  I do tend to stick with FormCalc for predicates, it is meant to be a little faster.

Regards

Bruce

View solution in original post

7 Replies

Avatar

Level 3

Hi Pipi Li,

i´am not 100% sure but i thing you can use something like this check the value all type of your tree :

$data.resolveNodes('RootNode.item[*].Type') .item(*).value; // i thing for every item, it should return his value then you can check this value ; if ....,item(*).value == "A".

Arthur

Avatar

Correct answer by
Level 10

Hi,

When you use $.item.[Type=='A'], that is with square brackets then the expression is expected to be a FromCalc expression, which means you need to use double quotes, i.e. $.item.[Type=="A"].  The JavaScript equivalent would be $.item.(Type.value=='B') ... using the round brackets.  I do tend to stick with FormCalc for predicates, it is meant to be a little faster.

Regards

Bruce

Avatar

Level 1

Hi,

In case of having items: A, B, C, and  I want to display items with type = A, type = B . How can I get this conditional data binding?

Thanks!

Avatar

Level 2

Hi Bruce,

$.item.[Type=="A"] still can not work. But the JavaScript predication $.item.(Type.value=='B') works. Thanks so much.

BR, PiPi Li

Avatar

Level 2

Hi, Arthur

Thanks for ur reply. Do you mean add check script to Event?

BR, PiPi Li

Avatar

Level 4

That appears unnecessary to me.

Conditional bindings without any scripting perfectly perform the task. You do not need to script for this kind of task.

I just checked with one of my example forms:

$.Legobrick.[Color<>"green"]

works perfectly to bind only subforms where the underlying element "Color" does not have the value "green".