[data grid] Implement server-side data source with nested data lazy loading
This issue covers the server-side lazy loading for nested data (tree data and row grouping) Currently, all the data for a selected tree data or row grouping node is fetched in one go, this feature will enable to load the nested data lazily by scrolling down. This is an advanced lazy loading use case and will be followed up after #10857 is done.
Please feel free to upvote the issue to see it land faster.
If you are looking for plain-data lazy loading check #10857
Action points:
- [ ] Use strategies to handle differences in the way the data is processed. Context
I would like to add a vote from a premium customer - ID: 96081 is this helps. Thank you!
With Server Side lazy loading now available, we would definitely like to have the feature work with Row Grouping so we do not have to choose one feature over the other within our Data Grids.
Our team would also like to see this implemented in a future version of DataGrid.
Premium customer - Support ID: 102668
This is a big issue for our team in implementing the data source. We are dealing with grouping large amounts of data that will have to return 1000s of rows and cause long api requests. What is the status of this feature?
We have a recipe that provides a solution based on the row pinning feature in the userland. It comes, however, with a few limitations.
I'd appreciate it if you could check it out and see if it works for your use cases: https://mui.com/x/react-data-grid/server-side-data/recipes/#tree-data-nested-pagination
Although it's targeting tree data for now, it could also be tweaked to work with the row grouping.
Just checking in on the status of this feature. We are also premium customers and are really looking forward to server-side lazy loading for nested data as it's crucial for our use case. Any updates on the timeline would be appreciated. Thank you!
Hey @kennyman, Thanks for checking in. This feature is indeed one of the next in line on our roadmap. However, a few higher-priority items are currently taking precedence, so we aren’t able to commit to an exact timeline just yet.
In the meantime, have you had a chance to try out the userland recipe shared above? If so, we’d love to hear more about why it doesn’t fully meet your needs.
@MBilalShafi how does the userland recipe prevent performance issues when there are 1000s of rows in the last nested subgroup?
We also need infinite/virtual scrolling for the last nested group in order for it to be a complete solution.
@MBilalShafi how does the userland recipe prevent performance issues when there are 1000s of rows in the last nested subgroup?
@zdonner100 It uses pagination to not load rows more than a specific number at a time. Performance shouldn't be much of an issue with less number of rows rendered at a time.
Did you already try the recipe and noticed something around performance?
Regarding the infinite loading counterpart, unfortunately it's not achievable in userland due to being complex so it'd be an internal feature. It's not yet a higher priority item for the team because of other pressing issues, feel free to upvote the issue to increase the chances of it being prioritised.
Is there any estimation on when this will be a feature? We are currently evaluating DataGridPremium, and this use case fits our needs. I've been trying to make this work on my own, before realizing that it is not supported. Here's a codesandbox from the mui chat with my attempt: https://chat.mui.com/chat/edit-RwQ0MRY1NzmqjJi7v_Hb?message_content=what%20does%20the%20model%20for%20the%20data%20returned%20by%20fetchRows%20look%20like%3F
This feature would be a game changer and an instant buy-in from my company. Happy to discuss further or help support this in any way.
This feature would be a life-saver for us too
Premium customer - Order ID: 116976
This feature would be amust for us. Order ID: 114806
We’re premium customers (second year) and would really appreciate having a lazy loading option when row count is unknown.
the people want this!
Really looking forward to this
Really looking forward to this
we are premium customers and are dying to get this! super important and core part of our product experience that is painful to work around today
Just a quick update: This feature is currently one of the team's top priorities, and work has already started. Feel free to share your early feedback once the PR is out to help shape the feature.