We’re
having a serious performance issues with RadGridView in Telerik v.2017.1.221.40
for Winforms. It is very easy to reproduce.
The code
below opens up a Form with the only control, RadGridView and then adds 5,000
rows to it. The control has a single column containing Boolean values. Since
the EnableHeaderCheckBox property of the column is set to
true, it is possible to manually tick the check box in the column header.
With v.2017.1.221.40,
after the checkbox ticked, it takes 10 seconds to the program to actually tick the boxes in all 5,000 rows and then 7 seconds to untick them. During this time the control (and the
form too of course) remains unresponsive.
In another code example, which is virtually identical to the one below (it’s part of a large application), it takes more than 30 seconds to perform the operation.
However with v.2015.1.331.40, this operation is executed instantaneously.
Environment: i7-4770 CPU @ 3.40Gz, 24GB RAM, Windows 10 Pro, .Net 4.6.
public partial class Form1 : Form
{
private Telerik.WinControls.UI.RadGridView rgvSites;
private readonly BindingList<Site1> siteList = new BindingList<Site1>();
public Form1()
{
InitializeComponent();
for (int i = 1; i <= 5000; i++)
{
this.siteList.Add(new Site1() { Id = i, Number = i, Name = "site" + i });
}
this.rgvSites.DataSource = this.siteList;
}
private void InitializeComponent()
{
Telerik.WinControls.UI.GridViewCheckBoxColumn gridViewCheckBoxColumn1 = new Telerik.WinControls.UI.GridViewCheckBoxColumn();
Telerik.WinControls.UI.TableViewDefinition tableViewDefinition1 = new Telerik.WinControls.UI.TableViewDefinition();
this.rgvSites = new Telerik.WinControls.UI.RadGridView();
((System.ComponentModel.ISupportInitialize)(this.rgvSites)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.rgvSites.MasterTemplate)).BeginInit();
this.SuspendLayout();
//
// rgvSites
//
this.rgvSites.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.rgvSites.CausesValidation = false;
this.rgvSites.EnableAnalytics = false;
this.rgvSites.EnableGestures = false;
this.rgvSites.EnableHotTracking = false;
this.rgvSites.EnableTheming = false;
this.rgvSites.Location = new System.Drawing.Point(31, 31);
//
//
//
this.rgvSites.MasterTemplate.AllowAddNewRow = false;
this.rgvSites.MasterTemplate.AllowCellContextMenu = false;
this.rgvSites.MasterTemplate.AllowColumnChooser = false;
this.rgvSites.MasterTemplate.AllowColumnHeaderContextMenu = false;
this.rgvSites.MasterTemplate.AllowColumnReorder = false;
this.rgvSites.MasterTemplate.AllowColumnResize = false;
this.rgvSites.MasterTemplate.AllowDeleteRow = false;
this.rgvSites.MasterTemplate.AllowDragToGroup = false;
this.rgvSites.MasterTemplate.AllowRowResize = false;
this.rgvSites.MasterTemplate.AutoGenerateColumns = false;
gridViewCheckBoxColumn1.AllowFiltering = false;
gridViewCheckBoxColumn1.AllowGroup = false;
gridViewCheckBoxColumn1.AllowHide = false;
gridViewCheckBoxColumn1.AllowReorder = false;
gridViewCheckBoxColumn1.AllowResize = false;
gridViewCheckBoxColumn1.AllowSort = false;
gridViewCheckBoxColumn1.EnableHeaderCheckBox = true;
gridViewCheckBoxColumn1.FieldName = "Selected";
gridViewCheckBoxColumn1.HeaderText = "Selected";
gridViewCheckBoxColumn1.Name = "Selected";
gridViewCheckBoxColumn1.VisibleInColumnChooser = false;
gridViewCheckBoxColumn1.Width = 23;
this.rgvSites.MasterTemplate.Columns.AddRange(new Telerik.WinControls.UI.GridViewDataColumn[] {
gridViewCheckBoxColumn1});
this.rgvSites.MasterTemplate.EnableGrouping = false;
this.rgvSites.MasterTemplate.EnableSorting = false;
this.rgvSites.MasterTemplate.ShowRowHeaderColumn = false;
this.rgvSites.MasterTemplate.VerticalScrollState = Telerik.WinControls.UI.ScrollState.AlwaysShow;
this.rgvSites.MasterTemplate.ViewDefinition = tableViewDefinition1;
this.rgvSites.Name = "rgvSites";
this.rgvSites.ShowCellErrors = false;
this.rgvSites.ShowItemToolTips = false;
this.rgvSites.ShowRowErrors = false;
this.rgvSites.Size = new System.Drawing.Size(240, 218);
this.rgvSites.TabIndex = 0;
this.rgvSites.Text = "Sites";
//
// Form1
//
this.ClientSize = new System.Drawing.Size(284, 261);
this.Controls.Add(this.rgvSites);
this.Name = "Form1";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)(this.rgvSites.MasterTemplate)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.rgvSites)).EndInit();
this.ResumeLayout(false);
}
}
class Site1
{
public long Id { get; set; }
/// <summary>
/// Site number.
/// </summary>
public long Number { get; set; }
/// <summary>
/// Site name.
/// </summary>
public string Name { get; set; }
public bool Selected
{
get;
set;
}
}