New to KendoReact? Start a free 30-day trial
DataSource Bulk Operations
DataSource Bulk OperationsPremium
The useRemoteDataSource
and useODataDataSource
hooks of the KendoReact DataSource support bulk operations, allowing you to accumulate multiple changes and submit them to the server in a single request.
Accumulating Changes
By default, any changes made to the data are accumulated and stored locally. These changes remain pending until you explicitly submit them to the server.
jsx
// Make multiple changes
dataSource.update({
data: { id: 1, name: 'Updated Product 1' }
});
dataSource.update({
data: { id: 2, price: 29.99 }
});
dataSource.create({
data: { name: 'New Product', price: 99.99 }
});
dataSource.delete({
data: { id: 3 }
});
// Changes are tracked but not sent to the server yet
console.log('Pending creates:', dataSource.creates.size);
console.log('Pending updates:', dataSource.updates.size);
console.log('Pending deletes:', dataSource.deletes.size);
Submitting Changes
Once you are ready with the data editing, you can submit all pending changes in a single request:
jsx
try {
await dataSource.sync();
console.log('Operation successful');
} catch (error) {
console.error('Operation failed:', error);
}
Handling Responses
Performing bulk operations allows you to handle the server's response appropriately. The onSuccess
and onError
callbacks allow you to manage the outcome of the operation:
jsx
const dataSource = useRemoteDataSource({
bulk: true,
transport: {
submit: {
url: 'https://api.example.com/products/submit',
onSuccess: (response) => {
console.log('Operation successful:', response);
// Handle successful operation
},
onError: (error) => {
console.error('Operation failed:', error);
// Handle operation failure
}
}
}
});
Discarding Changes
You can also discard all pending changes if needed:
jsx
dataSource.discard();