I am using a RowEditor in a fairly standard scenario with most of the code taken from the demos. I have an add button that I've wired up in what seems to be a fairly standard way:

var grid = #{GridPanel1};
grid.getRowEditor().stopEditing();

grid.insertRecord(0, {
name   : ""
});

grid.getView().refresh();
grid.getSelectionModel().selectRow(0);
grid.getRowEditor().startEditing(0);
I have some validation attached to the 'name' textfield. The validation prevents a range of inputs including the empty string. That all works fine. If the user edits a row, they have to cancel or fix any validation errors before they can commit the row or select another row. No problems here.

The validation is a custom validation function configured like so:

<ext:TextField ... Validator="myValidationFunction" ... />
However, I've run into the following scenario:

When I add a row, I can't really provide a valid default for the 'name' field. I default the field value to an empty string as per the example above.

The user clicks the add button, they get the new row and RowEditor appearing, and the roweditor even shows the correct validation error (empty strings are not allowed). This is fine.

The problem is that the user is then able to select another row and is NOT prevented from doing this even though the input is invalid. The result is a new row with invalid data.

I'm guessing this is because I'm doing an 'add' and then an 'edit' and the grid/roweditor doesn't force the user to supply a valid input if they did not change the original field value (even if the original field value was invalid).

If I'm not missing anything obvious, is there any reasonable workaround for this? I've tried solving this with the RowEditor Before/After edit events or by looking at ways to change the field value to trick the RowEditor into thinking the value has been changed. No luck so far.