Aspose.Cells GridJs – “Updating is in progress” Blocks Fast Editing

I would like to report a usability issue in Aspose.Cells GridJs, related to editing performance when entering data quickly into multiple cells.

When I input values rapidly — by clicking and typing in different cells one after another — I often receive the message:
“updating is in progress, please try later.”

This significantly affects the user experience, as it forces users to edit cells very slowly, otherwise updates are blocked.
The result is that the application feels unresponsive, and end users perceive the control as laggy or unstable, especially in scenarios requiring fast input.

This issue occurs when using the implementation described in the official Aspose documentation, available here:
Aspose.Cells-for-.NET/Examples_GridJs at master · aspose-cells/Aspose.Cells-for-.NET · GitHub

In contrast, when I test the official online demo on your site:
Edit Excel Files Free Online
—the behavior is noticeably different. In that version, I don’t see the “updating is in progress” message, and the app seems to queue user actions and execute them more smoothly in the background. Editing is much more fluid there.

My question is:
Could you please increase the performance of this control?
How can I achieve the same behavior as in the official demo?
Is there a configuration, event handling method, or queuing mechanism used in the online app that is missing from the example implementation?

@klep

Cause

The issue you’re experiencing with the “updating is in progress” message in Aspose.Cells GridJs is likely due to the way the control handles rapid input. When multiple cell edits are made quickly, the control may not be able to process these updates efficiently, leading to a perceived lag and unresponsiveness.

Solution

To improve the performance and achieve a smoother editing experience similar to the official demo, consider implementing a queuing mechanism for cell updates. This can help manage rapid input more effectively by allowing the control to process updates in the background without blocking user actions.

Code

Here’s a basic example of how you might implement a queuing mechanism for cell updates:

let updateQueue = [];
let isUpdating = false;

function queueUpdate(cell, value) {
    updateQueue.push({ cell, value });
    processQueue();
}

function processQueue() {
    if (isUpdating || updateQueue.length === 0) return;

    isUpdating = true;
    const { cell, value } = updateQueue.shift();

    // Simulate the update process
    setTimeout(() => {
        // Update the cell value here
        grid.updateCell(cell, value);
        isUpdating = false;
        processQueue(); // Process the next update in the queue
    }, 100); // Adjust the delay as necessary
}

// Usage
grid.onCellEdit = (cell, value) => {
    queueUpdate(cell, value);
};

Next Steps

  1. Implement the queuing mechanism in your GridJs setup.
  2. Test the performance with rapid input to see if the responsiveness improves.
  3. Adjust the processing delay in the setTimeout function as needed to find the optimal balance between responsiveness and performance.

If you have any further questions or need additional assistance, please feel free to ask. I’m here to help!

@klep,

We apologize for any inconvenience this may have caused. The online Excel editor application utilizes Aspose.Cells.GridJs in the background. We would be more than happy to assist in addressing the issue. Could you please share specific sample code or project along with some screenshots captured or a demo video to illustrate the problem? We will review it soon.

@klep
It will queue the update event automatically.
Can you try update to the latest version now which is v25.7 for both server-side and client-side.
If you still find this issue, please provide your sample project and sample spreadsheet file.

Thank you for your support.
I have updated both the server-side and client-side code to use the latest version (25.7.0 of Aspose.Cells GridJs, and I can confirm that the issue is now resolved. The update event is properly queued, and the control behaves as expected.
Thanks again for your help and assistance!

@klep
Thank you for your feedback. You are welcome. I am glad that your issue has been resolved after using the latest version 25.7. If you have any questions, please feel free to contact us at any time.