Employee.FirstName is a Field Mapped on related field I pressume? These aren't defined in the fields object, so you can't set these using SetNewFieldValue() as they're not really part of the entity.
You can work around this as follows:
EmployeeEntity employee = new EmployeeEntity();
employee.Person = new PersonEntity();
foreach(GridEXCell cell in e.Row.Cells)
{
if ( cell.DataChanged )
{
string fieldName = cell.Column.DataMember;
if(Enum.IsDefined(typeof(EmployeeFieldIndex), fieldName))
{
employee.SetNewFieldValue(fieldName, cell.Value );
}
else
{
employee.Person.SetNewFieldValue(fieldName, cell.Value);
}
}
}
Another is via property descriptors but that's really awkward.
I'll try to fix this in the upcoming upgrade with an override of SetNewFieldValue, which simply does this.Name = value, no matter what Name is: a field, a field mapped onto a related field or a field mapped onto an m:1/1:1 relation.