I think to do this, you will have to derive the grid and override HandleCurrentCellKeyDown. Below is code that will not delete any row under 5, but will delete rows after 5. Exactly how you will decide whether a record is a new record or not is up to you. You could track them by primary key for example. You could override OnRowLeave and if e.IsAddNew, then add the primary key value to an arraylist or something, and then test this in the HanleCurrentCellKeyDown override.
public class MyGridDataBoundGrid : GridDataBoundGrid
{
protected override void HandleBoundCurrentCellKeyDown(KeyEventArgs e)
{
if(e.KeyCode == Keys.Delete && !this.CurrentCell.IsEditing)
{
if(this.CurrentCell.RowIndex < 5)
{
e.Handled = true;
return;// do not preocess Delete
}
}
base.HandleBoundCurrentCellKeyDown (e);
}
}