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

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".