diff --git a/packages/datalib/src/GridDisplay.ts b/packages/datalib/src/GridDisplay.ts
index db92e426c..6aada156e 100644
--- a/packages/datalib/src/GridDisplay.ts
+++ b/packages/datalib/src/GridDisplay.ts
@@ -58,6 +58,7 @@ export abstract class GridDisplay {
filterable = false;
editable = false;
isLoadedCorrectly = true;
+ supportsReload = false;
setColumnVisibility(uniquePath: string[], isVisible: boolean) {
const uniqueName = uniquePath.join('.');
diff --git a/packages/datalib/src/TableGridDisplay.ts b/packages/datalib/src/TableGridDisplay.ts
index f002ee50a..692c92f30 100644
--- a/packages/datalib/src/TableGridDisplay.ts
+++ b/packages/datalib/src/TableGridDisplay.ts
@@ -32,6 +32,7 @@ export class TableGridDisplay extends GridDisplay {
this.filterable = true;
this.sortable = true;
this.editable = true;
+ this.supportsReload = true;
this.baseTable = this.table;
if (this.table && this.table.columns) {
this.changeSetKeyFields = this.table.primaryKey
diff --git a/packages/datalib/src/ViewGridDisplay.ts b/packages/datalib/src/ViewGridDisplay.ts
index c9a5758c6..26b957fde 100644
--- a/packages/datalib/src/ViewGridDisplay.ts
+++ b/packages/datalib/src/ViewGridDisplay.ts
@@ -17,6 +17,7 @@ export class ViewGridDisplay extends GridDisplay {
this.filterable = true;
this.sortable = true;
this.editable = false;
+ this.supportsReload = true;
}
getDisplayColumns(view: ViewInfo) {
diff --git a/packages/web/src/datagrid/DataGridContextMenu.js b/packages/web/src/datagrid/DataGridContextMenu.js
index bdd89e6dd..76b76ec6d 100644
--- a/packages/web/src/datagrid/DataGridContextMenu.js
+++ b/packages/web/src/datagrid/DataGridContextMenu.js
@@ -15,30 +15,42 @@ export default function DataGridContextMenu({
}) {
return (
<>
-
- Reload
-
-
+ {!!reload && (
+
+ Reload
+
+ )}
+ {!!reload && }
Copy
-
- Revert row changes
-
-
- Delete selected rows
-
-
- Insert new row
-
+ {revertRowChanges && (
+
+ Revert row changes
+
+ )}
+ {deleteSelectedRows && (
+
+ Delete selected rows
+
+ )}
+ {insertNewRow && (
+
+ Insert new row
+
+ )}
-
- Set NULL
-
+ {setNull && (
+
+ Set NULL
+
+ )}
{exportGrid && Export}
-
- Filter selected value
-
+ {filterSelectedValue && (
+
+ Filter selected value
+
+ )}
{openQuery && Open query}
Open selection in free table editor
>
diff --git a/packages/web/src/datagrid/DataGridCore.js b/packages/web/src/datagrid/DataGridCore.js
index dd661325a..853cbc02c 100644
--- a/packages/web/src/datagrid/DataGridCore.js
+++ b/packages/web/src/datagrid/DataGridCore.js
@@ -345,13 +345,13 @@ export default function DataGridCore(props) {
event.pageY,
display.reload()}
- setNull={setNull}
+ revertRowChanges={grider.containsChanges ? revertRowChanges : null}
+ deleteSelectedRows={grider.editable ? deleteSelectedRows : null}
+ insertNewRow={grider.editable ? insertNewRow : null}
+ reload={display.supportsReload ? () => display.reload() : null}
+ setNull={grider.editable ? setNull : null}
exportGrid={exportGrid}
- filterSelectedValue={filterSelectedValue}
+ filterSelectedValue={display.filterable ? filterSelectedValue : null}
openQuery={openQuery}
openFreeTable={handleOpenFreeTable}
/>