ListView doesnt rerender or refresh input fields with fresh data

I am using a multiview container lets say container A and container B, A has a table and B has a listview repeater.

when i click a row in the table i am pulling the data of that row from currentSourceRow method to loop through its data which will be shown in the listview grid in repeaster format, and I set the container's view key to B so my users can see the details of from that row into listview in repeating format.

I have input field inside my listview and a save button which is prepopulated by a default value received, lets say ex. "7", from the source row data that the user just clicked. the intension to do this is to provide the user to change that fields data inside the listview.

now the issue is when the list view is first loaded with the row's data everything is perfect.
if the user changed the value and clicks the save button, i am able to get these value and save it. but if the user changes the value, lets say to "5" in the input field but doesn't save, and goes back to container view A and clicks another row from the table, then the listview shows new data from the new row selected, but the default value from the input box remains the same that is "5".

there is no method to reinitiate or rerender the listview or the input field.

I have the primary key of the listview set correctly.

i tried to save the row's data to a state variable first and then assign this variable as the listview's data sourrce, so that when i change the variable's values, the state should change, but still in this case as well, the input field shows "5" which is the first user changed value.

please help me :frowning:

Thank you for finding a similar issue to leave a note in!

https://community.retool.com/t/bug-component-in-gridview-dont-update-when-change-pages/31243/8

Will keep both threads updated :slight_smile:

1 Like

Any news about this?, I have a similar issue

Just checked in with the engineers working on this! Will let you know if there's any news

2 Likes

Thats great... will be waiting.. thanks for informing...

Hi, any update on this?

Hi @shyambh this should be fixed; are you seeing issues still?

Hi there, I've stumbled upon this thread because I currently have an issue with list views, and it seems to be due to the failure of list view input components to pick up default values when they change in the list view datasource.

I have a list view, and the datasource is a Variable/temporary state array. Amongst other properties, it has price_excl and price_incl.

I have a number input in the list view (numberAccPrcExcl), which has default value price_excl, which after firing a Change event, runs a JS query, which updates price_excl in the Variable array. It also calculates a new value for price_incl (Adding GST tax).

Initially, this all works fine, with the Variable array getting updated, and the associated value in the number input component for price_incl (numberAccPrcIncl) gets updated too (through the default value). However, I began to notice that sometimes the number input component value wouldn't get updated, even though I could see the Variable array was still getting updated.

After testing some scenarios, I worked out that updating of the numberAccPrcIncl works fine up until I directly change the value of that component. (My desired functionality is for one component to update the other and vice versa, but I began with just one-way to test idea).

As a further test, I added a text component (non-input component) to the list view and set its value as price_incl, and that always updates correctly, so I feel like this is a bug.

I've attached a screen recording. You can see that I can interact with the numberAccPrcIncl and it still works fine as long as I dont change the value!
chrome_bYX75ZiZ9G

Hi Tess, the issue is still extaly the same.

I did discover a work-around for the time being: If I remove the whole "row" (the object that contains the property I'm updating, from the array) and update the Variable (setIn), and then add that object back into the array (at the same position) and update the Variable (setIn), it works fine. This obviously isn't an ideal solution...