diff --git a/apps/desktop/src/composables/useDataGridEditor.ts b/apps/desktop/src/composables/useDataGridEditor.ts index d5de63882a..cbb7fd9302 100644 --- a/apps/desktop/src/composables/useDataGridEditor.ts +++ b/apps/desktop/src/composables/useDataGridEditor.ts @@ -1,4 +1,4 @@ -import { ref, computed, nextTick, type ComputedRef, type Ref } from "vue"; +import { ref, computed, nextTick, watch, type ComputedRef, type Ref } from "vue"; import * as api from "@/lib/api"; import { buildDataGridRollbackStatements, @@ -704,6 +704,15 @@ export function useDataGridEditor(options: UseDataGridEditorOptions) { exitTransaction(); } + // Pending changes reference rows by sourceIndex. When the result set changes + // (e.g. different WHERE clause, pagination), stale indices point to wrong rows. + watch( + () => result.value.rows, + () => { + discardChanges(); + }, + ); + return { editingCell, editValue,