diff --git a/src/components/grid/DataGrid.vue b/src/components/grid/DataGrid.vue index 8fe7ab5602..e9a0805d01 100644 --- a/src/components/grid/DataGrid.vue +++ b/src/components/grid/DataGrid.vue @@ -428,7 +428,7 @@ const activeCellDetail = computed(() => { if (!item || !column) return null; const value = item.data[cell.col] ?? null; const rawValue = formatCell(value); - const valueText = value === null ? "" : String(value); + const valueText = value === null ? "" : typeof value === "object" ? JSON.stringify(value) : String(value); const trimmed = valueText.trim(); const maybeJson = typeof value === "string" && (trimmed.startsWith("{") || trimmed.startsWith("[")); let formattedJson = ""; @@ -578,7 +578,7 @@ function startEdit(rowId: number, colIdx: number) { isCancelling = false; editingCell.value = { rowId, col: colIdx }; const val = item?.data[colIdx] ?? null; - editValue.value = val === null ? "" : String(val); + editValue.value = val === null ? "" : typeof val === "object" ? JSON.stringify(val) : String(val); nextTick(() => { const input = document.querySelector(".cell-edit-input") as HTMLInputElement; input?.focus(); diff --git a/src/lib/gridSelection.ts b/src/lib/gridSelection.ts index 7fc57b42e6..07d77ac64b 100644 --- a/src/lib/gridSelection.ts +++ b/src/lib/gridSelection.ts @@ -51,6 +51,7 @@ export function extractSelection( function displayValue(value: GridCellValue): string { if (value === null) return "NULL"; if (typeof value === "boolean") return value ? "true" : "false"; + if (typeof value === "object") return JSON.stringify(value); return String(value); }