[]
The fetch method initializes or refreshes table data based on the table’s configured data source.
fetch(reload?: boolean): Promise<any>;fetch() initializes the table if it has not been loaded.
fetch(true) forces the table to reload data from its configured data source.
This section describes the behavior and usage of the reload mode.
Regardless of whether a table is configured with:
Local data (data), or
Remote data (remote)
You should always call table.fetch() before performing further operations such as:
Creating a View
Binding to a TableSheet
Accessing table data
Creating relationships
Calling fetch() ensures the table is fully initialized and ready for subsequent operations.
table.fetch().then(function(data) {
// Data is available here
});For example:
const table = dataManager.addTable("products", {
data: [
{ id: 1, name: "Pen" },
{ id: 2, name: "Notebook" }
]
});
const tableSheet = spread.addSheetTab( 0, "ProductTableSheet", GC.Spread.Sheets.SheetType.tableSheet );
// Always call fetch before using the table
table.fetch().then(function () {
const view = table.addView("productView");
view.fetch().then(function () {
tableSheet.setDataView(view);
});
});Reload is typically used with remote tables, where the underlying data may change outside the current application session.
Common scenarios include:
A manual Refresh button.
Periodic synchronization with a backend service.
Data updated by other users.
Re-querying the same endpoint to obtain the latest results.
To refresh table data from its configured data source, call:
table.fetch(true);Notes:
Guarantees that the table re-executes its configured data source.
Whether the actual data changes depends on the data source itself.
The internal update behavior during reload depends on the data source and usage scenario.
When fetch(true) is called:
The table data is reloaded.
Existing views are re-evaluated.
Sorting and filtering rules remain unchanged.
Bound components update automatically if the data changes.
Reload doess not:
Recreate the table
Recreate views
Require view.fetch()
Require setDataView() again
If the reloaded data is identical to the previous result, no visible change occurs.
If a view has active sorting or filtering:
The rules are preserved.
After reload, they are applied to the newly loaded data.
The result set may change depending on the new data.
No additional operation is required.
const dataManager = spread.dataManager();
const tableSheet = spread.addSheetTab( 0, "ProductTableSheet", GC.Spread.Sheets.SheetType.tableSheet );
const products = dataManager.addTable("products", {
remote: {
read: {
url: "https://demodata.mescius.io/northwind/api/v1/products",
}
}
});
// Initial load
products.fetch().then(() => {
const view = products.addView("productView");
view.fetch().then(function () {
tableSheet.setDataView(view);
});
// Later: force reload
document.getElementById("refreshBtn").addEventListener("click", () => {
products.fetch(true).then(() => {
tableSheet.setDataView(view);
console.log("Table data reloaded.");
});
});
});After fetch(true):
The table re-requests data from the remote endpoint.
Existing view rules remain.
The TableSheet reflects updated data automatically.
In addition to refreshing the same endpoint, fetch(true) can also be used when the table’s data source needs to change at runtime.
A common scenario occurs in template-based workflows.
Designers often build spreadsheet templates using test or demo endpoints during development.
When the template is deployed to production, the application must replace the test endpoint with a production data source.
In this case:
The table definition remains.
The remote endpoint is updated.
fetch(true) is used to load data from the new source.
var options = myTable.options;
// Replace the remote endpoint (development → production)
options.remote.read.url = "https://developer.mescius.com/spreadjs/demos/server/api/Order";
myTable.options = options;
// Reload from the new endpoint
myTable.fetch(true).then(function () {
// Recreate view for the new dataset
var view = myTable.addView("myView2");
view.fetch().then(function () {
sheet.setDataView(view);
});
});When switching to a different endpoint:
The returned dataset may differ in structure or content.
Existing view state may not align with the new data.
Recreating the view ensures correct binding and recalculation.
This pattern is commonly used when promoting templates from development to production environments.