In the sample, adding this rowenter event identified parent level and child levels for me.
private void gridDataBoundGrid1_RowEnter(object sender, GridRowEventArgs e)
{
GridBoundRecordState rs = this.gridDataBoundGrid1.Binder.GetRecordStateAtRowIndex(e.RowIndex);
if(rs.LevelIndex > 0)
Console.WriteLine("child level");
else
Console.WriteLine("root level");
}