Freeze repeater row and column in a dynamic panel

Hi everyone,

I’m new to Axure, especially repeaters. This is my first post here too! :slight_smile: Anyway…

I have a repeater that looks like a normal table. I put it in a dynamic panel because I want to have a fixed area for it to appear in. However, as the repeater is very long, I want to freeze the first row and the first 8 columns on scrolling.

I’ve tried to use the onScroll method described here: Unfortunately, the example provided only moves a normal object on scroll. And I have no idea how to move only a single row or column in the repeater.

Can someone please teach me how? Or if you know of any other way to make those repeater rows/columns stick, please teach me too :slight_smile:

P/S: I’m on Axure8, but I am open to solutions on Axure9 too.

Thanks so much for replying! :smile:

Yup, the header is the first row of the repeater, in a different dynamic panel state.

Hi fsiqi

I canned my original reply - (it will disappear) after giving the overall problem some thought and trying a couple of things. Extracting the header row would get you halfway there so you’ll have a fixed header and scrolling table beneath.

I’d be surprised if there’s any way of fixing the 8 left hand columns whilst retaining vertical and horizontal ‘scrollability’ that’s not mind boggling.

Issues with (in no particular order)…

  • scrolling precedence with nested dynamic panels
  • repeater splitting / syncing
    …make it hard or impossible to do - for me at tleast!

Though there are wiser heads I’m sure!

Separate out the header - sacrifice the split horizontal scrolling - and it’s reasonably straightforward I think.

Hi Mike, thanks for taking the time to try this out, really appreciate it!

I truly wish the header to be part of the repeater though so that it can scroll horizontally with the other parts of the table without showing two scrollbars.

Following the method described here, I tried this:
On scroll of the [table dynamic panel], move [repeater] to scroll-y of the [table dynamic panel]

And it seems promising:

But to get it to work properly, I have to move only the first row in the repeater instead of the whole thing:
On scroll of the [table dynamic panel], move [repeater row1] to scroll-y of the [table dynamic panel]

Unfortunately, being new to repeaters, I have no idea how to do that. I also don’t know if moving only one row of the repeater is something that is possible. Do you happen to know if it is?

I managed to “freeze” the first 8 panels following the method above :+1:

Thinking out loud a bit here…I’m not sure you can isolate a repeater row from outside a repeater in that way. Maybe…

If you set a variable (say varOnscroll) to be 1 or 0 depending on whether you’re scrolling or not?
Then in the repeaters ‘OnLoadItem’ script have some conditionality around that variable.
if index=1 and varLoaditem = 1 then scroll-y of the etc.
else etc.

Doesn’t feel like it would work though…:no_mouth:
In fact it wouldn’t - without forcing a repeater update like a sort or a filter. OnLoadItem only runs when the repeater is processing.

If you can share your file…? Poss. you cannot. Bravo on the column freezing - would be interesting to see. Though notice that your fixed columns are going over your scrollable ones which may not be the desired behaviour?

Recommend not getting too enmeshed in nailing the prototype - it’s ‘just a prototype’ :wink:

I’m not exactly clear on what you’re trying to do or what you were able to get working but, is this close to what you were looking for?
Scroll_With_Frozen_Columns.rp (92.9 KB)

1 Like

Hi Huban,

Yes, it’s exactly what I needed. Thank you so much! :star_struck:

Seems like Mike was on the right track about separating the header from the repeater. It just didn’t occur to me at all to do that, and then place the header+repeater in a dynamic panel. I’m such a numbskull. It seems so obvious now :joy:

Thanks, good people for helping me out! My first Axure forum experience has been such a pleasant one thanks to you guys.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.