# DataManager-Based Binding

## Content

DataManager-based binding allows supported SpreadJS binding scenarios to participate in collaboration when the binding source is a DataManager table.
Non-DataManager binding does not participate in collaboration. This includes binding directly to plain objects, object arrays, and other non-DataManager sources.
Use DataManager-based binding when collaborators need to work with the same structured business data model and keep supported binding state consistent across clients.

## Collaboration Scope

The collaboration scope is limited to binding scenarios backed by DataManager.
The following binding scenarios are supported:

* Sheet binding with a DataManager table
* Cell binding with a DataManager table
* Worksheet table `bindingPath` with a DataManager-backed cell binding source
* Worksheet table binding directly to a DataManager table
    Binding scenarios that do not use a DataManager table as the binding source are outside the collaboration scope.

## Sheet Binding with DataManager

A worksheet can bind to a DataManager table and participate in collaboration.
In this scenario, the sheet uses a record from the DataManager table as the binding source. Cells with binding paths resolve their values from the current record.
This scenario is typically used for form-like layouts, detail pages, invoices, or other templates that display fields from one record.
For general sheet binding usage, see [Sheet Binding in SpreadJS Designer](/spreadjs/docs/features/binding/designertemplate).

## Cell Binding with DataManager

A cell binding source can use a DataManager table as its source and participate in collaboration.
In this scenario, each cell binding path refers to a field in the active record. The active record index is part of the DataManager-based cell binding scenario.
For general cell binding usage, see [Bind Cells](/spreadjs/docs/features/binding/bindcells).

## Table `bindingPath` with a DataManager-Backed Cell Binding Source

A worksheet table can use `bindingPath` with a cell binding source that is backed by a DataManager table.
This is useful for master-detail layouts. For example, the sheet can bind to one customer record, while a worksheet table binds to an array field such as that customer's orders or projects.
For general table `bindingPath` usage, see [Bind Tables](/spreadjs/docs/features/tablegen/tablebind).

## Worksheet Table Binding with DataManager

A worksheet table can bind directly to a DataManager table and participate in collaboration.
The collaboration behavior depends on the DataManager table's data source type:

* **Local Data** — Supported table viewing, editing, and bound-area operations can participate in collaboration.
* **Remote Data** — Collaboration synchronizes binding configuration, table range, and related table state. Remote data consistency is controlled by the business application.
    For details, see Worksheet Table Binding with DataManager.

## Data Source Scope

DataManager-based binding collaboration depends on the underlying DataManager table.

### Local Data

When the DataManager table uses JSON-based in-memory local data, supported binding state and supported data changes can participate in collaboration.

### Remote Data

When the DataManager table uses Remote Data, the remote data source itself is not synchronized by the collaboration system.
SpreadJS can synchronize supported binding configuration and related worksheet table state, but the business application is responsible for:

* Remote data consistency
* Backend persistence
* Change notifications
* Refresh timing
* Table layout synchronization decisions
    For remote worksheet table binding behavior, see [Worksheet Table Binding with DataManager](/spreadjs/docs/spreadjs-collaboration-server/spreadjs-sheets-collaboration/collaboration-capability/data-manager-based-model/datamanager-based-binding/worksheet-table-binding-with-datamanager).