RadDataForm - Get the Result
If you followed the articles about
providing the source
and
describing the properties, you now know how to edit an object's properties with
RadDataForm
for NativeScript. Now to get the result
of these modifications, you need to commit the modifications and
get the updated object.
Commit Changes
When you set the source
property of
RadDataForm
, an editor is created for each of the
properties of the source object and the values of these
properties are loaded into the corresponding editor. When you
make changes to the values of the editors, they are not
necessarily immediately saved in the source object. The changes
are saved when the values are validated (if there are
validators) and then committed. To commit a value in the context
of RadDataForm
means to save the current editor
value in the source object. When this commit happens is
determined by the value of the
commitMode
property.
Commit Modes
The commit modes in RadDataForm
define when the
changes in the editors will be reflected in the source object.
You can set your preferred value to the
commitMode
property. Here are the options:
-
Immediate
: This is the default mode. All changes are committed immediately when the editor's value is changed. -
OnLostFocus
: The changes are committed when another editor gets focused. -
Manual
: The changes are committed only when thecommitAll
or thevalidateAndCommitAll
methods is called.
Once the modifications are committed the source object will be
updated so you can use it to check the result. You can also use
the
editedObject
property of RadDataForm
which returns a stringified
JSON representation of the modified object. When the commit is
Manual, the commit happens when one of the
commitAll
or
validateAndCommitAll
methods is called. The first is of type void
while
the second returns a
Promise
which will be resolved with a boolean value which is the result
from the validation. When there is no validation, the two
methods do not differ significantly. When there is validation,
you need to ensure that the values are validated before calling
commitAll
or you can use
validateAndCommitAll
which will do the both. You
can read more about the validation in RadDataForm
here.
Commit Events
RadDataForm
provides
propertyCommit and
propertyCommitted events that you can use to
get notified that some modifications are committed or are about
to be. The propertyCommit event notifies you
before the actual commit so you can optionally cancel it by
setting the
returnValue
of the arguments to false
as shown in the following
example.
Example 1: Cancel the commit for an editor
<RadDataForm [source]="person" marginTop="50" row="1" (groupExpanded)="dfGroupExpanded($event)" (groupCollapsed)="dfGroupCollapsed($event)"
(propertyCommit)="dfPropertyCommit($event)" (propertyCommitted)="dfPropertyCommitted($event)">
public dfPropertyCommit(args) {
if (args.propertyName === "name") {
this._eventsText = "LastEvent: name property commit cancelled";
args.returnValue = false;
}
}
The other event - propertyCommitted - is called
after the property is committed so you can use it to get the new
value from the source object or through the
RadDataForm
's
editedObject
property.
References
Want to see these scenarios in action? Check our SDK Examples for Angular repo on GitHub. You will find these and many other practical examples with NativeScript UI.
Related articles you might find useful: