Lazy loading on Gridweb control

Hi,


I’m using your gridweb control since a couple of monthes and I have noticed that the browser has some trouble displaying large workbooks. In fact, the global navigation becomes slow and the server spend a lot of time to calculate the page and then return it to the client. I guess it’s a normal behaviour because of all the data it has to display but I want to know if it’s possible to do lazy loading with GridWeb ? For example, for large worksheets with several thousands of cells, Gridweb only loads a couple of lines/columns and then the rest is loaded gradually only if user scroll down.

Thanks for your answer,

Regards,

Romain.

Hi,


Thanks for providing us some details.

Please try our latest version Aspose.Cells.GridWeb v8.7.0 (if you are not already using it) with its latest resource files from acw_client folder. Also, please make sure to set needInitAlignmentAdjust=false in the “acwmain.js” file (by default, it is also set as false). When setting this attribute to false, it should take little time to load the long data list (matrix) into GridWeb.

If you still find the issue, kindly do provide a sample project (runnable), zip it and post us here to show the issue on our end, we will check it soon.

Thank you.

Hi Amjad,


I just checked my acwmain.js and noticed that needInitAlignmentAdjust is already set to false.

However, you didn’t answer to my question. Is that possible to do lazy loading with GridWeb?

Thanks,

Hi,


Well, we have already done some optimization work and supported similar kind of feature for loading bigger Excel files (having formatted data and long list of contents/data) into GridWeb matrix. Please try to enable asynchronous processing option on while loading the spreadsheet, please set EnableAsync to set it to true. Moreover, you may also try to set EnablePaging to true accordingly for your scenario if it works for your needs.

Thank you.

Thanks for your reply,


However, EnableAsync is not very convenient to use because it’s not fluid at all. I mean when you are scrolling down, nothing happens (the content is frozen) except that the scrollbar move down until a thresold where the grid will load the next rows.

EnablePaging adds complexity for the user because if the workbook contains many worksheet, it adds the pagination to the worksheet buttons. Plus, if the worksheet contains a table with a header, if this header is situated at the end of a page, it means that the user will have to switch between 2 pages to see the header and the content of his data table.

So is there a way to make the scroll navigation more fluid when EnableAsync is set to true as Google or Microsoft did on their web version of Excel ?

Thanks,

Hi,


Thanks for providing us further details.

We are sorry that the suggested options are not working perfectly for your scenario. We appreciate if you could provide us a sample project (runnable), zip it and post us here (with template file) to show the issue on our end, we will check it soon. We might log a ticket for your issue/requested feature after evaluation.

Thank you.

Hi,


Thanks for your reply,

I don’t think it’s necessary to provide you a sample project because this behaviour is the same on every workbook when the GridWeb width and height are set to 100% and when worksheet is too large to be displayed without any scollbar. Generally, without talking about EnableAsync, there is a delay (about 2sec) between the moment where you are scrolling and the moment where the content of the grid is scrolling. It’s kind of annoying because on every applications, a scrollbar action acts immedialty on the scollable content: it’s much more fluid.

And this behavior is even more annoying when EnableAsync is set to true because the user don’t know how far he has to scroll to reach the content he want to display. For big worksheets with a lot of rows, it’s kind of a lottery. You move the scrollbar somewhere and then you wait a couple of seconds to see what part of your worksheet is displayed and if it’s not the part you wanted to see you retry and wait and retry and wait… Moreover, classic web table which do lazy loading, load new rows on scrolling down event, but they just add the new rows which mean that they keep previous rows accessible without any server postback. On GridWeb, when you scoll down and then scrollup it cause each time a postback.

All that things make the gridweb navigation not fluid and sometimes kind of annoying…
Hi,

Thanks for providing us further details.

lswe:
....is there a way to make the scroll navigation more fluid when EnableAsync is set to true as Google or Microsoft did on their web version of Excel ?

Well, I am afraid, web scenario (as compared to desktop application) is different and you might not get seamless display of data and navigation might not be fully fluid in big files with long list of data/contents. Anyways, we want to see how to do it fluidly. We certainly need to get some demo page which shows your suggested way as you told Google or Microsoft did on their web versions of Excel. Please provide the needful. We can investigate and mimic the behavior which is fluid but we need a scenario to exhibit how other web applications deal with big Excel files fluidly, so we could study and learn to consequently mimic the same behavior in our GridWeb control.

Thank you.

Hi,


I perfectly agree with you that a web application cannot work as an Excel.

However, as you will see in the attached demo, there is too much a difference between the action of my scrolling down and the “lazy loading” of the grid; ie:
- the page is only half loaded to start with (it gives the impression that the grid is fully loaded).
- if I scroll down a little, nothing happens (giving the impression that the scrollbar is useless).
- I must scroll down a lot before the content continues to download.

Furthermore, once we are at the bottom of the grid, I do not understand why the grid has to be reloaded if I scroll back up again. Why does it have to generate a server postback ? Why isn’t the data stored on the client which is common with lazy loading pattern?

I wanted to attach to this post a video which shows the difference between GridWeb control and Google Docs “Excel” but I have an error that says me “the connection was reset”. Please tell me when you will fix this issue…

Thank you,

Hi,


Thanks for providing us further details.

We need your demo which shows the comparison b/w the way Aspose.Cells.GridWeb shows the same Excel file and your desired way by Google or Microsoft on their web versions of Excel. Please use similar file for the task (please also attach the file here) and capture the video accordingly, so we could investigate and try to mimic the behavior in GridWeb. If you find “Connection was reset” error while uploading the video here (in the forum post), the error might be due to file size. We would appreciate if you could use any free file hosting service such as, Dropbox or Google Drive to upload the demo video archive and then share the download link here. We will check and then log a ticket into our database for our product team’s review/ investigation.

Thank you.

Hi,


I will use wetransfer.com to send you the file but I need your email address.

Could you please give it to me?

Thank you,

Hi,


Well, sending the file to my email id is not a viable option if the file is bigger in size. It would be best if you could use any of your desired free file hosting services, such as, Dropbox or Google Drive to upload the demo video archive and then share the download link here. You may remove the file once we download it.

Thank you.

Hi,


I did not talk about sending you the file in an email. WeTransfer is a website that allows you to send some big file (max 2 GB). It’s free and we don’t need any user account to use it.

However, I need your email because after the file was uploaded WeTransfer send you an email with the download URL. It’s how the website works.

I don’t have any Dropbox or Google Drive account so it’s easier for me to use Wetransfer.

Thanks for your comprehension,

Hi,


Please do as following to get my email id:
1) Click the Contact button in the Post.
2) In the drop down list options click "Send Amjad Sahi an email”.
3) You will get an online frame where you may find my email id in b/w parentheses.

Thank you.

Hi,


Sorry, it is still not giving my email id.

I think you may try:
1) Click the Contact button in the Post.
2) In the drop down list options click "View Amjad Sahi’s profile”.
3) Now click “User Extended Info” tab on the page to view the Email.

Hope, this works now.

Thank you.

Again, where ?



Hi Jerome,


I think it is more related to rights issue as you cannot access my profile completely. Anyways, I have now sent a test mail to your email id (mentioned in your account’s profile). My email id would be delivered to you, so you could find it.

Thanks and we are sorry for any inconvenience caused!

Hi,


We have downloaded the sample project with demo video (as you sent us the mail with shared link). After an initial test, I observed the issue as demonstrated by your demo video. I found an issue with Lazy loading when setting EnableAsync attribute to true while scrolling in GridWeb control. I also compared the behavior with Google Docs which provide fluid navigation b/w the areas of the worksheet as you pointed out. I have logged an investigation ticket with an id “CELLSNET-44267” for your issue. Our concerned developer from product team will look into it soon.

Once we have an update on it, we will let you know here.

Thank you.

Hi,


Thank you for your reply,

Please let me know when you will improve navigation performance with EnableAsync. It’s a very important feature because without it, Gridweb is very slow to load large workbook: a workbook with about 30000 cells need more than 30s to be loaded.

Thank you,

Hi,


I have discussed your issue (logged earlier as “CELLSNET-44267”) with the concerned developer from product team. He is already working over it. Since it is complex on its own and to accomplish the fluidity what Google Docs display surely needs thorough investigation and analysis. Anyways, we hope that we could provide you a test version/fix before the end of this month.

Once we have an update on it, we will let you know here.

Thank you.