diff --git a/packages/web/src/datagrid/DataGridCore.js b/packages/web/src/datagrid/DataGridCore.js index 115b172d2..5e63f61ed 100644 --- a/packages/web/src/datagrid/DataGridCore.js +++ b/packages/web/src/datagrid/DataGridCore.js @@ -391,6 +391,9 @@ export default function DataGridCore(props) { loadNextData(); } } + if (props.masterLoadedTime && props.masterLoadedTime > loadedTime) { + display.reload(); + } if (display.cache.refreshTime > loadedTime) { reload(); } @@ -426,10 +429,10 @@ export default function DataGridCore(props) { }, [jslid]); React.useEffect(() => { - if (props.onRefSourceRowsChanged) { - props.onRefSourceRowsChanged(getSelectedRowData()); + if (props.onRefSourceRowsChanged && ((loadedRows && loadedRows.length > 0) || isLoadedAll)) { + props.onRefSourceRowsChanged(getSelectedRowData(), loadedTime); } - }, [selectedCells, props.refReloadToken]); + }, [selectedCells, props.refReloadToken, loadedRows && loadedRows[0]]); // const handleCloseInplaceEditor = React.useCallback( // mode => { diff --git a/packages/web/src/datagrid/TableDataGrid.js b/packages/web/src/datagrid/TableDataGrid.js index cd7d4fddb..2b5da2f32 100644 --- a/packages/web/src/datagrid/TableDataGrid.js +++ b/packages/web/src/datagrid/TableDataGrid.js @@ -22,12 +22,14 @@ export default function TableDataGrid({ setConfig = undefined, cache = undefined, setCache = undefined, + masterLoadedTime = undefined, }) { const [myConfig, setMyConfig] = React.useState(createGridConfig()); const [childConfig, setChildConfig] = React.useState(createGridConfig()); const [myCache, setMyCache] = React.useState(createGridCache()); const [childCache, setChildCache] = React.useState(createGridCache()); const [refReloadToken, setRefReloadToken] = React.useState(0); + const [myLoadedTime, setMyLoadedTime] = React.useState(0); const connection = useConnectionInfo({ conid }); const [reference, setReference] = React.useState(null); @@ -70,7 +72,8 @@ export default function TableDataGrid({ }, [conid, database, display]); const handleRefSourcedRowsChanged = React.useCallback( - (selectedRows) => { + (selectedRows, loadedTime) => { + setMyLoadedTime(loadedTime); if (!reference) return; const filters = { ...(config || myConfig).filters, @@ -112,6 +115,7 @@ export default function TableDataGrid({ onReferenceClick={setReference} onRefSourceRowsChanged={reference ? handleRefSourcedRowsChanged : null} refReloadToken={refReloadToken.toString()} + masterLoadedTime={masterLoadedTime} /> {reference && ( )} diff --git a/packages/web/src/datagrid/types.ts b/packages/web/src/datagrid/types.ts index 123e5aa77..de2d2b349 100644 --- a/packages/web/src/datagrid/types.ts +++ b/packages/web/src/datagrid/types.ts @@ -13,4 +13,5 @@ export interface DataGridProps { onReferenceClick?: (def: GridReferenceDefinition) => void; onRefSourceRowsChanged?: Function; refReloadToken?: string; + masterLoadedTime?: number }