setFieldDataNative method
Implementation
@override
void setFieldDataNative(TField field, TValueBuffer? buffer) {
if (!dsWriteModes.contains(state)) {
databaseErrorFmt(SNotEditing, [name], this);
}
final rec = state == TDataSetState.dsCalcFields ? calcBuffer : activeBuffer();
if (rec == null) return;
final key = field.fieldName.toUpperCase();
if (field.fieldKind == TFieldKind.fkCalculated ||
field.fieldKind == TFieldKind.fkLookup) {
rec.calcData[key] = buffer?.value;
} else {
rec.fieldData[key] = buffer?.value;
}
// The tail of bufdataset's SetFieldData: only broadcasts outside of the calculated/filter/NewValue states
const silentStates = {
TDataSetState.dsCalcFields,
TDataSetState.dsFilter,
TDataSetState.dsNewValue,
};
if (!silentStates.contains(state)) {
dataEvent(TDataEvent.deFieldChange, field);
}
}