Select checkboxes across multiple repeaters

Hi,

Sorry for the terrible title but I couldn’t come up with a better description. I have an .rp file attached and a description below that better communicates my goals.

  • I have three repeaters each representing three lists
  • Fruit, Vegetables and Organics
  • In the fruits and vegetables categories there are organic and non-organic versions of the same product.

Functionality I’d like to include the following:
If a user selects (checks) an organic item from the Fruit or Vegetable list, I’d like it to select (check) the corresponding item in the Organics list.

E.g. if my user selects Organic Apples from the Fruit list it also selects (checks) Organic Apples from the Organics list… Vice versa, if my user selects Organic Apples from the Organics list it should select (check) Organic Apples in the Fruit list.

Interactions_between_Repeaters.rp (116.2 KB)

As always, thanks in advance for seconds or minutes anyone puts against this!

Gratefully,

Dustin

Hi!

Thanks for the nice explanation. There’s a lot you can do with repeaters, and a lot of it isn’t the slightest bit intuitive. Also, there are some other things you’ll need to know to understand how this works.

First, be careful about using IF vs ELSE IF. The second condition in your OnItemLoad handlers (testing for marked rows) was an ELSE IF and thus would never execute. (You can right-click the condition in the Properties panel to toggle between IF and ELSE IF.) Also - ha! - be careful about spelling Organic the same way in each dataset!

Also, when you mark a row, that’s all it does: mark it. It does not redraw the repeater whose row was marked. You have to force the repeater to redraw (if you are not doing any other update). That’s what all of those “Set Items per Page of Repeater to unlimited” commands do: force the repeater to redraw itself (i.e.,execute its OnItemLoad handler for each row).

The last thing is using the “listener” method. Since we already have code in the checkbox button in the repeater that works, when we hit the Select All/None checkbox, we can first mark/unmark all rows in the repeater, and then fire an OnClick on each row. That’s what the hotspot (a.k.a., the “listener”) in the repeater row does with it’s OnMove handler. When you move an item in a repeater, its OnMove command will fire FOR EACH ROW sequentially. So if we unmark all rows, then have this hotspot click the checkbox for each row, the checkbox will mark the row (because it’s unmarked). Google “Axure listener repeater” and you’ll find a bunch of examples.

Live Sample
File: Interactions_between_Repeaters.rp (122.3 KB)

1 Like

Hello Joseph,

Brilliant. I really appreciate you describing the hows and whys here also. Very helpful education for future prototypes. Studying the listener method right now!

And thanks for the above and beyond grammar and spell check! :wink:

Best,

Dustin

Glad I could help. If you have any questions feel free to ask.

If you want a challenge using the listener method, use one to check or uncheck the Select All checkbox appropriately based on whether all checkboxes below it are checked or not. (Hint: you will use this listener to count how many rows are checked.)