Refresh View
If there is a view of connected records, Knack does not currently refresh the view of connected records. To work around this, we can implement this custom code so the connected view is also updated as well.
Original Post: https://forums.knack.com/t/refreshing-a-details-view-on-form-submit-record-delete/18301
Knack API Documentation for Record events: https://docs.knack.com/reference/records-events
The original post also includes a GIF of the code in action as well.
Some Example Use Cases
Refreshing an Attachments table connected to a parent record form adding or deleting
Refreshing a Invoice Grid Table connected to adding/deleting an invoice line item form
Refreshing a Details View with connected records when a connected record is added or deleted
Keep in mind that for connected records, if you delete the parent record the connected record will no longer show up in the view but will be an orphaned record since Knack does not do cascading deletions.
The Triggers
Modify line 14 below depending on what you wish to trigger the review refresh by
'knack-form-submit.view_XXX'
for form submit.'knack-record-create.view_XXX'
for record create.'knack-record-update.view_XXX'
for record update.'knack-cell-update.view_XXX'
for record update through an inline edit in a table view'knack-record-delete.view_XXX'
for record delete
The JS
Copy/Paste the JS below and replace view_XXX
and view_YYY
in line 14-15.
view_XXX
is the view used for submitting a form onknack-form-submit.view_XXX
view_YYY
is the view that is being refreshed
/****************************************/
/*** Refresh View on Submit/Delete ***/
/****************************************/
// A function to refresh a specified view
function refreshView(viewKey) {
Knack.views[viewKey].model.fetch();
setTimeout(() => {
Knack.views[viewKey].render();
Knack.views[viewKey].postRender();
}, 2000);
}
// If record is submitted through form
$(document).on('knack-form-submit.view_XXX', function (event, view, data) {
refreshView('view_YYY'); // the view being refreshed
});
Last updated
Was this helpful?