diff --git a/packages/builder/src/builderStore/dataBinding.js b/packages/builder/src/builderStore/dataBinding.js
index bbe116721a..615b032d92 100644
--- a/packages/builder/src/builderStore/dataBinding.js
+++ b/packages/builder/src/builderStore/dataBinding.js
@@ -734,9 +734,19 @@ export const getSchemaForDatasource = (asset, datasource, options) => {
// Determine the schema from the backing entity if not already determined
if (table && !schema) {
if (type === "view") {
- // For views, the schema is pulled from the `views` property of the
- // table
+ // Old views
schema = cloneDeep(table.views?.[datasource.name]?.schema)
+ } else if (type === "viewV2") {
+ // New views which are DS+
+ const view = table.views?.[datasource.name]
+ schema = cloneDeep(view?.schema)
+
+ // Strip hidden fields
+ Object.keys(schema || {}).forEach(field => {
+ if (!schema[field].visible) {
+ delete schema[field]
+ }
+ })
} else if (
type === "query" &&
(options.formSchema || options.searchableSchema)
diff --git a/packages/builder/src/components/backend/DataTable/ViewV2DataTable.svelte b/packages/builder/src/components/backend/DataTable/ViewV2DataTable.svelte
index 21b3e1c291..e4e1adda36 100644
--- a/packages/builder/src/components/backend/DataTable/ViewV2DataTable.svelte
+++ b/packages/builder/src/components/backend/DataTable/ViewV2DataTable.svelte
@@ -13,7 +13,7 @@
}
const handleGridViewUpdate = async e => {
- viewsV2.replace(id, e.detail)
+ viewsV2.replaceView(id, e.detail)
}
diff --git a/packages/builder/src/components/backend/DataTable/buttons/grid/GridCreateViewButton.svelte b/packages/builder/src/components/backend/DataTable/buttons/grid/GridCreateViewButton.svelte
index 33c416d7ef..3244ce3277 100644
--- a/packages/builder/src/components/backend/DataTable/buttons/grid/GridCreateViewButton.svelte
+++ b/packages/builder/src/components/backend/DataTable/buttons/grid/GridCreateViewButton.svelte
@@ -1,7 +1,7 @@