To reproduce:
public Form1()
{
InitializeComponent();
DataTable dt = new DataTable();
for (int i = 0; i < 10; i++)
{
dt.Columns.Add("Col" + i);
}
for (int i = 0; i < 10; i++)
{
DataRow row = dt.NewRow();
foreach (DataColumn col in dt.Columns)
{
row[col.ColumnName] = "Data " + i + "." + dt.Columns.IndexOf(col);
}
dt.Rows.Add(row);
}
this.radGridView1.DataSource = dt;
this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
this.radGridView1.AddNewRowPosition = Telerik.WinControls.UI.SystemRowPosition.Bottom;
this.radGridView1.Columns[9].IsVisible = false;
this.radGridView1.Columns[8].ReadOnly = true;
this.radGridView1.Columns[2].IsVisible = false;
this.radGridView1.Columns[4].IsVisible = false;
this.radGridView1.Columns[6].IsVisible = false;
}
Workaround: use a custom row behavior and control what to be the selected cell when pressing the Tab key for example:
public Form1()
{
InitializeComponent();
DataTable dt = new DataTable();
for (int i = 0; i < 10; i++)
{
dt.Columns.Add("Col" + i);
}
for (int i = 0; i < 10; i++)
{
DataRow row = dt.NewRow();
foreach (DataColumn col in dt.Columns)
{
row[col.ColumnName] = "Data " + i + "." + dt.Columns.IndexOf(col);
}
dt.Rows.Add(row);
}
this.radGridView1.DataSource = dt;
this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
this.radGridView1.AddNewRowPosition = Telerik.WinControls.UI.SystemRowPosition.Bottom;
this.radGridView1.Columns[9].IsVisible = false;
this.radGridView1.Columns[8].ReadOnly = true;
this.radGridView1.Columns[2].IsVisible = false;
this.radGridView1.Columns[4].IsVisible = false;
this.radGridView1.Columns[6].IsVisible = false;
//register the custom row behavior
BaseGridBehavior gridBehavior = radGridView1.GridBehavior as BaseGridBehavior;
gridBehavior.UnregisterBehavior(typeof(GridViewNewRowInfo));
gridBehavior.RegisterBehavior(typeof(GridViewNewRowInfo), new CustomGridHierarchyRowBehavior());
}
public class CustomGridHierarchyRowBehavior : GridNewRowBehavior
{
protected override bool ProcessTabKey(KeyEventArgs keys)
{
bool isLastColumn = this.Navigator.IsLastColumn(this.GridControl.CurrentColumn);
bool result = base.ProcessTabKey(keys);
if (isLastColumn)
{
this.GridControl.CurrentColumn = this.GridControl.Columns[0];
this.GridControl.BeginEdit();
}
return result;
}
}