[ https://issues.apache.org/jira/browse/FLEX-35007?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Skylar Sutton updated FLEX-35007: --------------------------------- Description: h2. Background We have an advanced datagrid defined as such: {code:borderStyle=solid} <mx:AdvancedDataGrid headerStyleName="headerStyle" headerSortSeparatorSkin="mx.skins.ProgrammaticSkin" id="myGrid" designViewDataType="tree" displayItemsExpanded="true" treeColumn="{supersessionTreeGrid.columns[1]}" width="100%" maxWidth="{this.width-10}" height="100%" dataProvider="{new HierarchicalData(model.myGridData)}" verticalGridLines="false" sortableColumns="false" draggableColumns="false" borderAlpha="1" folderClosedIcon="{null}" folderOpenIcon="{null}" defaultLeafIcon="{null}" variableRowHeight="true" borderVisible="true" columns="{model.myGridCOlumns}" </mx:ExtendedAdvancedDataGrid> {code} If the ArrayCollection myGridColumns is rebound, from a click that originates within the grid, we're getting a 1009 error on AdvancedListBase:9250 {code:title=AdvancedListBase.as:9249|borderStyle=solid} var rowData:BaseListData = rowMap[item.name]; lastUID = rowData.uid; {code} h2. Root Cause It appears that the AdvancedListBase is trying to execute a mouseOverHandler event against the OLD row data (prior to the rebind). Since the new row data does not contain the item in question, the rowMap lookup returns a null object, and "rowData.uid" pops a NPE. The simple fix is to just wrap another null check around that... but I'm not sure if it's symptmatic of something larger (e.g. should the event be supressed higher up?). h2. Simple Fix {code:title=AdvancedListBase.as:9247|borderStyle=solid} ... if (lastHighlightItemRenderer && highlightUID) { var rowData:BaseListData = rowMap[item.name]; if (!rowData) { return; } lastUID = rowData.uid; } ... {code} was: We have an advanced datagrid defined as such: {noformat} <mx:AdvancedDataGrid headerStyleName="headerStyle" headerSortSeparatorSkin="mx.skins.ProgrammaticSkin" id="myGrid" designViewDataType="tree" displayItemsExpanded="true" treeColumn="{supersessionTreeGrid.columns[1]}" width="100%" maxWidth="{this.width-10}" height="100%" dataProvider="{new HierarchicalData(model.myGridData)}" verticalGridLines="false" sortableColumns="false" draggableColumns="false" borderAlpha="1" folderClosedIcon="{null}" folderOpenIcon="{null}" defaultLeafIcon="{null}" variableRowHeight="true" borderVisible="true" columns="{model.myGridCOlumns}" </mx:ExtendedAdvancedDataGrid> {noformat} If the ArrayCollection myGridColumns is rebound, from a click that originates within the grid, we're getting a 1009 error on AdvancedListBase:9250 {noformat} var rowData:BaseListData = rowMap[item.name]; lastUID = rowData.uid; {noformat} It appears that the AdvancedListBase is trying to execute a mouseOverHandler event against the OLD row data (prior to the rebind). Since the new row data does not contain the item in question, the rowMap lookup returns a null object, and "rowData.uid" pops a NPE. The simple fix is to just wrap another null check around that... but I'm not sure if it's symptmatic of something larger (e.g. should the event be supressed higher up?). Simple Fix: {noformat} AdvancedListBase.mouseOverHandler: ... if (lastHighlightItemRenderer && highlightUID) { var rowData:BaseListData = rowMap[item.name]; if (!rowData) { return; } lastUID = rowData.uid; } ... {noformat} > Error 1009 in AdvancedListBase after re-binding backing array collection > ------------------------------------------------------------------------ > > Key: FLEX-35007 > URL: https://issues.apache.org/jira/browse/FLEX-35007 > Project: Apache Flex > Issue Type: Bug > Components: Advanced Data Grid > Affects Versions: Apache Flex 4.14.1 > Reporter: Skylar Sutton > > h2. Background > We have an advanced datagrid defined as such: > {code:borderStyle=solid} > <mx:AdvancedDataGrid > headerStyleName="headerStyle" > headerSortSeparatorSkin="mx.skins.ProgrammaticSkin" > id="myGrid" > designViewDataType="tree" > displayItemsExpanded="true" > treeColumn="{supersessionTreeGrid.columns[1]}" > width="100%" > maxWidth="{this.width-10}" > height="100%" > dataProvider="{new HierarchicalData(model.myGridData)}" > > verticalGridLines="false" > sortableColumns="false" > draggableColumns="false" > borderAlpha="1" > folderClosedIcon="{null}" > folderOpenIcon="{null}" > defaultLeafIcon="{null}" > variableRowHeight="true" > borderVisible="true" > columns="{model.myGridCOlumns}" > </mx:ExtendedAdvancedDataGrid> > {code} > If the ArrayCollection myGridColumns is rebound, from a click that originates > within the grid, we're getting a 1009 error on AdvancedListBase:9250 > {code:title=AdvancedListBase.as:9249|borderStyle=solid} > var rowData:BaseListData = rowMap[item.name]; > lastUID = rowData.uid; > {code} > h2. Root Cause > It appears that the AdvancedListBase is trying to execute a mouseOverHandler > event against the OLD row data (prior to the rebind). Since the new row data > does not contain the item in question, the rowMap lookup returns a null > object, and "rowData.uid" pops a NPE. > The simple fix is to just wrap another null check around that... but I'm not > sure if it's symptmatic of something larger (e.g. should the event be > supressed higher up?). > h2. Simple Fix > {code:title=AdvancedListBase.as:9247|borderStyle=solid} > ... > if (lastHighlightItemRenderer && highlightUID) > { > var rowData:BaseListData = rowMap[item.name]; > if (!rowData) { > return; > } > lastUID = rowData.uid; > } > ... > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)