mirror of
https://github.com/t8y2/dbx.git
synced 2026-10-21 03:49:30 +00:00
fix(grid): discard pending edits when result set changes
Pending changes (dirty cells, new rows, deleted rows) are tracked by sourceIndex into the current result array. When the query re-executes (e.g. different WHERE clause or pagination), stale indices silently point to different rows, causing wrong-row deletions on commit. Closes #336 (partial)
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user