Fixed issue (RTEs) with editable data grid when it has an array of simple values (Number, String etc)
Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/56c55d0f Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/56c55d0f Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/56c55d0f Branch: refs/heads/develop Commit: 56c55d0f3e6d77f38823a1204321d09c6017f9e2 Parents: af1e3b9 Author: Justin Mclean <jmcl...@apache.org> Authored: Sun Aug 4 02:05:58 2013 +1000 Committer: Justin Mclean <jmcl...@apache.org> Committed: Sun Aug 4 02:05:58 2013 +1000 ---------------------------------------------------------------------- .../src/mx/controls/AdvancedDataGridBaseEx.as | 59 +++++++++++++------- 1 file changed, 39 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/56c55d0f/frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as b/frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as index 9c3a3f4..627ca9a 100644 --- a/frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as +++ b/frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as @@ -3397,7 +3397,7 @@ public class AdvancedDataGridBaseEx extends AdvancedDataGridBase implements IIME ObjectUtil.getClassInfo(iterator.current, ["uid", "mx_internal_uid"]); - if(info) + if (info) cols = info.properties; } @@ -3420,15 +3420,21 @@ public class AdvancedDataGridBaseEx extends AdvancedDataGridBase implements IIME // this is an old recordset - use its columns var n:int = cols.length; var colName:Object; - for (var i:int = 0; i < n; i++) - { - colName = cols[i]; - if (colName is QName) - colName = QName(colName).localName; - col = new AdvancedDataGridColumn(); - col.dataField = String(colName); - newCols.push(col); - } + if (n == 0) { + col = new AdvancedDataGridColumn(); + newCols.push(col); + } + else { + for (var i:int = 0; i < n; i++) + { + colName = cols[i]; + if (colName is QName) + colName = QName(colName).localName; + col = new AdvancedDataGridColumn(); + col.dataField = String(colName); + newCols.push(col); + } + } } columns = newCols; generatedColumns = true; @@ -4017,7 +4023,7 @@ public class AdvancedDataGridBaseEx extends AdvancedDataGridBase implements IIME var g:Graphics = background.graphics; g.clear(); - if(columnIndex >= lockedColumnCount && + if (columnIndex >= lockedColumnCount && columnIndex < lockedColumnCount + horizontalScrollPosition) return; @@ -4035,8 +4041,9 @@ public class AdvancedDataGridBaseEx extends AdvancedDataGridBase implements IIME // Height is usually as tall is the items in the row, but not if // it would extend below the bottom of listContent - var height:Number = Math.min(lastRow.y + lastRow.height, - listContent.height - yy); + var height:Number = 0; + if (lastRow) + height = Math.min(lastRow.y + lastRow.height, listContent.height - yy); g.drawRect(xx, yy, headerInfo.headerItem.width, height); g.endFill(); @@ -8002,8 +8009,8 @@ public class AdvancedDataGridBaseEx extends AdvancedDataGridBase implements IIME var newData:Object = itemEditorInstance[_columns[event.columnIndex].editorDataField]; var property:String = _columns[event.columnIndex].dataField; var data:Object = event.itemRenderer.data; - var typeInfo:String = ""; - for each(var variable:XML in describeType(data).variable) + var typeInfo:String = describeType(data).@name; + for each (var variable:XML in describeType(data).variable) { if (property == variable.@name.toString()) { @@ -8032,11 +8039,23 @@ public class AdvancedDataGridBaseEx extends AdvancedDataGridBase implements IIME if (!(newData is int)) newData = Number(newData); } - if (data[property] != newData) - { - bChanged = true; - data[property] = newData; - } + if (property == null) + { + if (data != newData) + { + bChanged = true; + data = newData; + } + } + else + { + if (data[property] != newData) + { + bChanged = true; + data[property] = newData; + } + } + if (bChanged && !(data is IPropertyChangeNotifier)) { collection.itemUpdated(data, property);