To reproduce:
public Form1()
{
InitializeComponent();
List<DiffItem> diffItemsMain = GetSampleDataDiffItems(12500);
radGridView1.DataSource = diffItemsMain;
radGridView1.Relations.AddSelfReference(radGridView1.MasterTemplate, "Index", "ParentIndex");
radGridView1.MasterTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
}
private List<DiffItem> GetSampleDataDiffItems(int rootInstances)
{
List<DiffItem> diffItems = new List<DiffItem>();
for (int j = 0; j < rootInstances; j++)
{
string[,] sampleData = GetSampleDataArray();
string parentIndex = "";
for (int i = 0; i <= sampleData.GetUpperBound(0); i++)
{
DiffItem diffItem = new DiffItem(Guid.NewGuid().ToString());
diffItem.ObjectStatus = sampleData[i, 0];
diffItem.ObjectType = sampleData[i, 1];
diffItem.ObjectLabel = sampleData[i, 2];
diffItem.ChangeType = sampleData[i, 3];
diffItem.ObjectAccepted = sampleData[i, 4];
diffItem.ParentIndex = parentIndex;
diffItems.Add(diffItem);
parentIndex = diffItem.Index;
}
}
return diffItems;
}
private string[,] GetSampleDataArray()
{
string[,] sampleData = new string[,]
{
{ "New", "Parent", "A572", "Added", "Undecided" },
{ "New", "Child", "CM1", "Added", "Undecided" },
{ "Modified", "GrandChild", "A573", "Modified", "Undecided" },
{ "Modified", "GreatGrandChild", "CM2", "Modified", "Undecided" }
};
return sampleData;
}
public class DiffItem
{
public DiffItem(string index)
{
Index = index;
}
public string ObjectStatus { get; set; }
public string Index { get; set; }
public bool ObjectSelected { get; set; }
public string ObjectType { get; set; }
public string ObjectLabel { get; set; }
public string ChangeType { get; set; }
public string ObjectAccepted { get; set; }
public string ParentIndex { get; set; }
}
Try to edit one random cell. You will notice that after pressing the Enter key to commit the changes, the editor is closed after a few seconds.
Resolution:
The slowdown should be experienced only when editing columns which participate in the self-reference relation.