How populate cell values from a Repeater into Dynamic Panel text boxes, then on clicking Save have text box values update the Repeater cell value?

For my repeater (I built a fake tree table), on row click I display a dynamic panel. That dynamic panel is then used to update the corresponding values of that row’s data.
I want to show the values of the row in the dynamic panel then, if they are changed in the dynamic panel, upon clicking “Save” I want them to update in that repeater’s row. How do I do that?

Axure Repeater Question.rp (436 KB)

1 Like

You’ll want to use the Update Row action. To update the correct row, you can either use a rule (such as “[[Item.index == VariableForIndex]]” if you’re tracking the selected index in a variable, or you can Mark rows (such as unmark all then mark the current) when you show the panel and then apply the update based on marked rows.

How do I display the values from each repeater cell into it’s corresponding text box in the dynamic panel on click of the row?

I don’t understand what mark/unmark rows means or what it results in.

In repeater, let’s say you have a button that we’ll put the click action on to populate the repeater data into the panel. Your case would look something like:

OnClick ->
Set TextField1 (in the panel) to: [[Item.column0]], set TextField2 to: [[Item.column1]], etc.

Now when you click that button in a row, the data from that row will populate into the fields in the panel. If you want to push data from the panel back into the repeater, you need to know what row in the repeater to update.

You can accomplish this either with a rule, or using marked rows.

If you want to use a rule, add an additional action to the button example above: Set Variable Index to [[Item.index]]. Now whenever a button in a row is clicked, that row’s index is saved in the variable Index. Now when you click your save button in the panel, you can use a rule to identify the correct row in your Update Row action: [[Item.index == Index]]. You’ll then fill in the columns to update from whatever widgets you used in your panel.

Alternatively, you can mark a row instead. In this case on the original button example, you’ll need to add an extra action to Mark the current row. Then when you Update Row, instead of a rule, choose Marked Rows instead. The only row that will be marked is the one that was clicked. Don’t forget to clear all marked rows after you update the row, or you’ll start updating every row clicked.


From a performance perspective will Axure perform better with the rule or the mark row for updating column values for the selected row on click of a button?

Do I need to create a Variable for the rule to work?

As for performance, I have no idea. My guess is with a reasonably sized repeater (less than 20 rows) there will be no difference. But that’s just a guess.

To use a rule, I believe yes you will need a variable to store the index of the last clicked row.

Who knows where to find a tutorial of how to make a repeater with a pseudo-tree (like sshot from topicstarter)?
Sample from msivivck is good idea for my studying.