Bug with scrollbar position

20 posts, 0 answers
  1. Simon
    Simon avatar
    166 posts
    Member since:
    Sep 2010

    Posted 14 Apr 2015 Link to this post

    Hello,

     I discovered a bug with the grid's vertical scrollbar when dealing with asynchronous read call.  Indeed, if you start moving scrollbar's slider with the mouse up and down, you'll end up firing a bunch of Transport.Read requests.  If those requests are treated asynchronously (like most ajax requests), the grid seems to have some problem displaying the right data.

     I did create this snippet to simulate the problem.  If you take a look at my print screen, you'll notice that the displayed indexes are from 42401 to 42600 out of the 250 000 records.  However, you'll also notice that the slider is almost at the bottom of the slider.  Based on the __count value provided to the grid, the slider position for those indexes should be somewhere near the top of the scrollbar (about 20%).  

    This image alone is enough to confirm a problem with the grid scrollbar. However, the real problem is not the slider position but the displayed data itself. Indeed, by releasing the slider at this position I was expecting the indexes over 230 000 to be displayed but it's not the case.

     Is there a workaround to fix this?

     Best regards,

     Simon

  2. Dimo
    Admin
    Dimo avatar
    8475 posts

    Posted 16 Apr 2015 Link to this post

    Hello Simon,

    I am not able to reproduce the described problem. Here is a video, let me know if I am missing something.

    http://screencast.com/t/wLK3pnCnU9mS

    Generally, we specially made improvements in the Grid code to avoid this issue in Kendo UI version 2014.2.716. Before that, the inconsistency could be exhibited on a random basis, depending on a combination of the following factors:

    - scrolling speed
    - page size
    - Grid height
    - server response time

    Regards,
    Dimo
    Telerik
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
  3. Simon
    Simon avatar
    166 posts
    Member since:
    Sep 2010

    Posted 20 Apr 2015 in reply to Dimo Link to this post

    Hello Dimo,

    Here's a screencast of the problem: http://www.screencast.com/t/UxI8pBXl

    To problem will occur if you go up and down before releasing the slider.

    Regards,

    Simon

     

  4. Dimo
    Admin
    Dimo avatar
    8475 posts

    Posted 22 Apr 2015 Link to this post

    Hi Simon,

    It appears that the specific databinding technique used in the mockup example manages to circumvent the algorithms, which take care of preventing the issue with the incorrect rows being shown. Please usе an approach similar to one of the following:

    http://demos.telerik.com/kendo-ui/grid/virtualization-remote-data

    http://demos.telerik.com/kendo-ui/grid/virtualization-local-data

    One more thing that you can do is force the Grid dataSource to make requests only after the user stops scrolling. This is achieved by executing the following line before initializing the Grid:

    kendo.ui.VirtualScrollable.fn.options.prefetch = false;

    Regards,
    Dimo
    Telerik
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
  5. Simon
    Simon avatar
    166 posts
    Member since:
    Sep 2010

    Posted 22 Apr 2015 in reply to Dimo Link to this post

    Hello Dimo,

    Before implementing our logic, we followed kendo's documentation for the Transport.Read and the WebSocket example.  The mockup I provided in the snippet is only a simplified version of what's really going on our side.  I really think Kendo should consider fixing this because this feature is really useful and it gives us a lot of flexibility to handle our data.

    The good news here is that your workaround is solving the issue... disabling prefetch is something I've been asking for awhile (see this post).  However, unlike the Transport.Read, disabling prefetch isn't officially supported by Kendo​ (see Kiril Nikolov answer to my post).

    I think Kendo should fix both of the problem mentioned above (custom Transport.Read + support prefetch disabling).

    Best regards,

    Simon

     

  6. Simon
    Simon avatar
    166 posts
    Member since:
    Sep 2010

    Posted 24 Apr 2015 Link to this post

    Hello Dimo,

    After we changed the preftech value to false, we started experiencing performance problems elsewhere in the grid.  Indeed, if the grid's verticalScrollbar scrollTop function, get called, it will always trigger the grid's dataBound callback.  This behaviour is slowing navigation even if you are scrolling with a page that is already fully loaded.

    Right now, the choice that we have is a grid that may not display the right data based on the slider position or a slower grid navigation.

    Regards,

    Simon

  7. Dimo
    Admin
    Dimo avatar
    8475 posts

    Posted 28 Apr 2015 Link to this post

    Hi Simon,

    Disabling prefetches changes the Grid behavior in the following ways:

    - disables background data requests during "slow" scrolling, so sooner or later 
    - new data is requested only after the user stops scrolling

    Probably you are talking about the effect that disabled background requests have on the user experience, as data is not immediately available after scrolling, unless the user has already been at the given scroll position previously and the data has been cached. This is expected.

    Regards,
    Dimo
    Telerik
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
  8. Simon
    Simon avatar
    166 posts
    Member since:
    Sep 2010

    Posted 28 Apr 2015 in reply to Dimo Link to this post

    Hello Dimo,

    No, actually, the real problem here is when you try to scroll within the same page of data.

    EX:

    1-The current scroll position loads item 200 to 299

    2- Usually, the grid's height will allow you to display only a part of those rows so let say that rows 230 to 239 are visibile.

    If you want to scroll down to row 240 from there (using the row's top position), you will have to call the verticalScrollbar scrollTop function and this is where the problems starts.

    If the prefetch is enable (default value): the grid will simply scroll to the row 240 without triggering anything else.  That's the expected behavior (but the prefetch is causing the slider issue I pointed out in this post)

    If the prefetch is disable: the grid will scroll to the row 240 AND trigger the grid dataBound callback.  It's not necessary to trigger the callback at this point since the grid has already loaded all the data to be displayed.  Triggering the dataBound callback have a real impact on the grid performance, especially when you want you need to navigate within the grid.

  9. Dimo
    Admin
    Dimo avatar
    8475 posts

    Posted 29 Apr 2015 Link to this post

    Hello Simon,

    Yes, that is correct - in this mode the Grid rebinds itself every time scrolling stops, eventhough it does not make a new remote request. The dataBound event is not tied to remote requests, but to table re-rendering, which occurs in this case.

    Regards,
    Dimo
    Telerik
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
  10. Simon
    Simon avatar
    166 posts
    Member since:
    Sep 2010

    Posted 29 Apr 2015 in reply to Dimo Link to this post

    Hello Dimo,

    Do you plan fixing any of these, or adding a flag in the dataBound event that would indicate the the rendering isn't necessary?

    Best regards,

    Simon

  11. Dimo
    Admin
    Dimo avatar
    8475 posts

    Posted 04 May 2015 Link to this post

    Hi Simon,

    The dataBound logic and table row re-rendering is implemented like this on purpose and we do not plan changing it. It is also worth noting that this behavior is related to a private API setting (enabled/disable prefetches).

    With regard to scroll positioning during virtual scrolling, we are currently working on virtual scrolling keyboard navigation, so I am not sure we will have resources to improve the scrolling behavior in the near future.

    Regards,
    Dimo
    Telerik
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
  12. Simon
    Simon avatar
    166 posts
    Member since:
    Sep 2010

    Posted 04 May 2015 in reply to Dimo Link to this post

    Hello Dimo,

    Disabling the prefetch may fall into the "feature request" section, but the scrolling position is really a bug that diverse to be fixed.  I don't know if Kendo has some kind of bug tracking system, but can you confirm if that bug was listed somewhere in order to be fixed?

    Best regards,

    Simon

  13. Dimo
    Admin
    Dimo avatar
    8475 posts

    Posted 06 May 2015 Link to this post

    Hi Simon,

    I agree that the virtual scrolling behavior would certainly benefit from some improvements, but this is the best implementation we have come up with so far.

    Regards,
    Dimo
    Telerik
     
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
     
  14. Simon
    Simon avatar
    166 posts
    Member since:
    Sep 2010

    Posted 06 May 2015 in reply to Dimo Link to this post

    Hello Dimo, 

    What I mentioned here is a bug, not a feature request.

    The main question here is the following: Will Telerik list this as a bug, giving us some hope for a short term fix or will they wait until a uservoice's request reach enough vote before considering any fix.  If the solution to the bug is to add a feature to the virtual scrolling, they should consider doing it in priority because you know that the seconds options may take some months, even years before we get an implementation.

    I can't tell my users to wait forever before getting a fix to this bug...

    Best regards,

    Simon

  15. Iliana Nikolova
    Admin
    Iliana Nikolova avatar
    2622 posts

    Posted 08 May 2015 Link to this post

    Hi Simon,

    We do not consider this as a bug, it is rather limitation of the current implementation. As Dimo said, some improvements might be done in the future, however this it the best implementation we have come up for the moment. Please excuse us for any inconvenience this may cause.

    Regards,
    Iliana Nikolova
    Telerik
     
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
     
  16. Simon
    Simon avatar
    166 posts
    Member since:
    Sep 2010

    Posted 12 May 2015 in reply to Iliana Nikolova Link to this post

    Hello Iliana, 

    I beg to differ but my users claims that displaying data that doesn't match with a slider is a bug...  If tell them it's a limitation and not a bug, I better get a good explanation because they won't agree so easily.

    Is it such a big deal for Telerik to fill a bug report?

    Simon

  17. Dimo
    Admin
    Dimo avatar
    8475 posts

    Posted 14 May 2015 Link to this post

    Hello Simon,

    Our Grid developers made a change in the Kendo UI DataSource implementation, which should improve the algorithms related to request cancellation and the virtual scrolling behavior. When testing with the new code, we were no longer able to observe the discussed scrollbar-position-vs-data-items discrepancy.

    Changes will take effect in the next internal build.

    Regards,
    Dimo
    Telerik
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
  18. Simon
    Simon avatar
    166 posts
    Member since:
    Sep 2010

    Posted 26 May 2015 in reply to Dimo Link to this post

    Hello Dimo,

    Thank you!  This is appreciated and my users will get an improved user experience.

    Simon

  19. Stephen
    Stephen avatar
    1 posts
    Member since:
    Jun 2012

    Posted 16 May 2016 in reply to Dimo Link to this post

    Hi Dimo,

     

    Can you confirm that this change made it into 2015.3.1111 please?  We're having similar issues with the virtualised grid, where data is not being shown, as the virtual scroll bar is positioned at the bottom of the scroller container, yet not all the data is being rendered.

     

    Thanks

     

    Steve

     

  20. Dimo
    Admin
    Dimo avatar
    8475 posts

    Posted 17 May 2016 Link to this post

    Hello Steve,

    Yes, I confirm. Please ensure that the Grid configuration is in accordance with the documentation guidelines and if needed, provide a runnable test page for inspection.

    http://docs.telerik.com/kendo-ui/controls/data-management/grid/appearance#virtual-scrolling

    Regards,
    Dimo
    Telerik
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
Back to Top