Hi Isomorphic,
retesting this issue, I noticed a different behavior depending on the way I stop editing a row.
"Enter" moves the row to the new group, even if there are errors, while a click outside the edit row and the "Down" key don't do this.
I'd expect to behave "Enter" like the others. While the thread above is about a similar thing involving server errors, this here also happens for client side validation errors.
Please see the modified customGrouping-sample (main change: client side validator added) in current 10.1p (v10.1p_2017-12-21) / 11.1p (v11.1p_2017-12-29):

Please note how Brazil ("Down"-key) stays in the group and Canada ("Enter"-key) moves to the new group.
Best regards
Blama
retesting this issue, I noticed a different behavior depending on the way I stop editing a row.
"Enter" moves the row to the new group, even if there are errors, while a click outside the edit row and the "Down" key don't do this.
I'd expect to behave "Enter" like the others. While the thread above is about a similar thing involving server errors, this here also happens for client side validation errors.
Please see the modified customGrouping-sample (main change: client side validator added) in current 10.1p (v10.1p_2017-12-21) / 11.1p (v11.1p_2017-12-29):
Code:
isc.ListGrid.create({
ID: "countryList",
width:500, height:600, canEdit:true, sortField:"countryName", modalEditing:true,
alternateRecordStyles:true, cellHeight:22,
dataSource: countryDS,
// display a subset of fields from the datasource
fields:[
{name:"countryName"},
{name:"continent"},
{
name:"independence",
getGroupValue : function (value, record, field, fieldName, grid) {
if (value == null) return "Ancient";
else if (value.getFullYear() < 1910) return "Pre-Industrial";
else return "Post-Industrial";
}
},
{
name:"population",
validators: [{
type: "integerRange",
min: 1,
max: 20000,
errorMessage: "Please provide a reason"
}],
GROUP_SMALL: 1,
GROUP_MED: 2,
GROUP_LARGE: 3,
getGroupValue : function (value, record, field, fieldName, grid) {
if (value < 100000000) return this.GROUP_SMALL;
else if (value < 1000000000) return this.GROUP_MED;
else return this.GROUP_LARGE;
},
getGroupTitle : function (groupValue, groupNode, field, fieldName, grid) {
switch (groupValue) {
case this.GROUP_SMALL:
baseTitle = "Population less than 100 million"; break;
case this.GROUP_MED:
baseTitle = "Population between 100 million-1 billion"; break;
case this.GROUP_LARGE:
baseTitle = "Population over 1 billion"; break;
}
baseTitle += " (" + groupNode.groupMembers.length + " members)";
return baseTitle;
}
},
{name:"countryCode", title:"Flag", width:40, type:"image", imageURLPrefix:"flags/16/", imageURLSuffix:".png"}
],
groupStartOpen:"all",
groupByField: 'population',
autoFetchData: true
})
Please note how Brazil ("Down"-key) stays in the group and Canada ("Enter"-key) moves to the new group.
Best regards
Blama
Comment