setFieldDataNative method

  1. @override
void setFieldDataNative(
  1. TField field,
  2. TValueBuffer? buffer
)
override

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);
  }
}