I'm working on Ignition Perspective where a table is bound to an indirect PLC tag based on a dropdown selection. The table displays recipe data from an array of PLC tags, and users can edit values directly in the table.
The issue is that after editing a cell, the PLC tag updates correctly, but the table does not refresh automatically. The updated value only appears after manually reselecting the dropdown or refreshing the page.
Setup Details
Indirect Tag Binding: [default]RECIPE_MANAGE/RECIPE_MANAGE_{recipeIndex}_{rowIndex}_/{columnName}
Cell Edit Event (onEditCellCommit):
Writes the updated value to the PLC tag using system.tag.writeBlocking().
Sends a message (system.perspective.sendMessage("RefreshRecipeTable", scope="session")) to refresh the table.
What Iβve Tried
Confirmed the tag updates correctly in Tag Browser after editing the table. Tried refreshBinding("props.data") in a message handler but still doesnβt auto-refresh. Forced dropdown selection reset (recipeIndex = -1 β restore) but no effect. Checked logs (system.util.getLogger("RecipeDebug")) β Shows that the tag write was successful.
Question: How Can I Force the Table to Refresh Automatically?
Does Refresh function worked for Indirect Tag?
Should I trigger a different property change instead of just recipeIndex?. I can refresh the table by selecting different value on dropdown and switch it back but i need it to auto-refresh.
Is there another way to force an update on the table ?
The table can display the dataset and update the cell value to PLC but it won't refresh automatically. I can only select another dropdown value and reselect the original value to refresh the table.
Anything i can do to refresh the Indirect Tag?
Your screengrab in post #3 shows that you are passing this as a view parameter {view.params.recipeIndex} which isn't the same thing. View parameters are only read once on view load.
You need to find another way to pass the value into the view. This could be a session.custom variable.
I think the issue is that you aren't changing the result of the indirect tag binding, so there's no change to make the transform run. You should move all of that transform code into a project library script function, and use runScript() to call it. Pass the recipe index into the function as an argument.