Unplanned
Last Updated: 24 Feb 2020 06:47 by ADMIN
Yannis
Created on: 10 Feb 2020 20:44
Category: GridView
Type: Bug Report
0
RadGridView: improve performance with kinetic scrolling

Hello,

I am using a radGridView on a Windows touch screen. When I am trying to scroll the rows by hand (EnableKineticScrolling was set to true), the scrolling process is very slow. If I will use the vertical scrollbar, then it is ok. How can I achieve this without using the vertical scrollbar?

I used EnableFastScrolling=true, but I did not see any improvement.

 

Regards,

Yannis

3 comments
ADMIN
Dess | Tech Support Engineer, Principal
Posted on: 24 Feb 2020 06:47
Hello, Yannis,

I have already confirmed that the kinetic scrolling needs performance improvements. Indeed, it is slower compared to the standard scrolling with the scrollbar either by using the mouse or with pan gesture.

We will do our best to introduce an appropriate solution accordingly. Please make sure that you follow this item and cast you vote for it. Thus, you will get notified whenever the status is changed. 

Should you have further questions please let me know.

 

Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik

Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
Yannis
Posted on: 17 Feb 2020 18:23

Hello Dess,

can you try to execute this on a Windows touch screen tablet? There are still huge delays on the scroll of the RadGridView.

Regards,

Yannis

ADMIN
Dess | Tech Support Engineer, Principal
Posted on: 11 Feb 2020 13:54

Hello, Yannis,    

When I set the EnableKineticScrolling property to true, I have noticed that the kinetic scrolling behavior (even with the mouse) is slower compared to using the vertical scrollbar. The attached gif file illustrates better the difference with the scrolling performance. 

I have logged it in our feedback portal by creating a public thread on your behalf. You can track its progress, subscribe for status changes and add your comments on the following link - feedback item.

I have also updated your Telerik points.

Currently, the possible solution that I can suggest is to disable the EnableKineticScrolling property. Alternatively, you can handle the MouseMove event and adjust the vertical scrollbar's value programmatically. A sample approach is demonstrated in the following code snippet. Note that this is just a sample approach and it may not cover all possible cases. Feel free to modify and extend it in a way which suits your requirements best. 

        public RadForm1()
        {
            InitializeComponent();

            this.radGridView1.MouseDown += radGridView1_MouseDown;
            this.radGridView1.MouseMove += radGridView1_MouseMove;
            this.radGridView1.MouseUp += radGridView1_MouseUp;
        }

        private void radGridView1_MouseUp(object sender, MouseEventArgs e)
        {
            downLocation = Point.Empty;
        }

        private void radGridView1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                int delta = e.Y - downLocation.Y;
                if (delta > 0)
                {
                    this.radGridView1.TableElement.VScrollBar.Value = Math.Min(this.radGridView1.TableElement.VScrollBar.Maximum - this.radGridView1.TableElement.VScrollBar.LargeChange - 1,
                        this.radGridView1.TableElement.VScrollBar.Value + this.radGridView1.TableElement.VScrollBar.SmallChange);
                }
                else
                {
                    this.radGridView1.TableElement.VScrollBar.Value = Math.Max(this.radGridView1.TableElement.VScrollBar.Minimum,
                        this.radGridView1.TableElement.VScrollBar.Value - this.radGridView1.TableElement.VScrollBar.SmallChange);
                }
            }
        }

        Point downLocation = Point.Empty;

        private void radGridView1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                downLocation = e.Location;
            }
        }

        private void RadForm1_Load(object sender, EventArgs e)
        { 
            this.productsTableAdapter.Fill(this.nwindDataSet.Products);

            this.radGridView1.BestFitColumns();

            this.radGridView1.EnableKineticScrolling = false;
            this.radGridView1.TableElement.VScrollBar.SmallChange = 10;
        }

I hope this information helps. If you need any further assistance please don't hesitate to contact me. 

Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik

Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.