To reproduce:
public Form1()
{
InitializeComponent();
for (int i = 0; i < 10; i++)
{
this.radGridView1.Columns.Add("Col" + i);
}
for (int i = 0; i < 8000; i++)
{
GridViewRowInfo row = radGridView1.Rows.NewRow();
foreach (GridViewCellInfo cell in row.Cells)
{
cell.Value = "Data" + row.Index + "." + cell.ColumnInfo.Index;
}
radGridView1.Rows.Add(row);
}
GridViewTemplate childTemplate = CreateChildTemplate();
this.radGridView1.Templates.Add(childTemplate);
childTemplate.HierarchyDataProvider = new GridViewEventDataProvider(childTemplate);
this.radGridView1.RowSourceNeeded += radGridView1_RowSourceNeeded;
}
private void radGridView1_RowSourceNeeded(object sender, GridViewRowSourceNeededEventArgs e)
{
for (int i = 0; i < 10; i++)
{
GridViewRowInfo row = e.Template.Rows.NewRow();
row.Cells["Name"].Value = "Name" + i;
row.Cells["ProductNumber"].Value = "ProductNumber" + i;
e.SourceCollection.Add(row);
}
}
private GridViewTemplate CreateChildTemplate()
{
GridViewTemplate template = new GridViewTemplate();
template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
GridViewTextBoxColumn namecolumn = new GridViewTextBoxColumn("Name");
GridViewTextBoxColumn productNumberColumn = new GridViewTextBoxColumn("ProductNumber");
template.Columns.AddRange(namecolumn,
productNumberColumn);
return template;
}
private void radButton1_Click(object sender, EventArgs e)
{
this.radGridView1.GridNavigator.SelectLastRow();
}
Workaround: navigate the vertical scrollbar to the last row before calling the SelectLastRow method:
private void radButton1_Click(object sender, EventArgs e)
{
this.radGridView1.TableElement.RowScroller.Scrollbar.PerformLast();
this.radGridView1.GridNavigator.SelectLastRow();
}