Curtis Aube created FLEX-34022:
----------------------------------
Summary: Null object reference when setting columns on Spark
DataGrid
Key: FLEX-34022
URL: https://issues.apache.org/jira/browse/FLEX-34022
Project: Apache Flex
Issue Type: Bug
Components: Spark: DataGrid
Affects Versions: Apache Flex 4.11.0, Apache Flex 4.9.0
Environment: Mac OS X
Reporter: Curtis Aube
If you set a bindable columns property for the DataGrid before it is
initialized and set an itemRenderer for one of the columns, you get a null
object reference when the DataGrid is initialized.
Here is an example:
<?xml version="1.0" encoding="utf-8"?>
<s:Application creationComplete="creationComplete()" minHeight="600"
minWidth="955" preinitialize="setColumns()"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.ArrayList;
import spark.components.gridClasses.GridColumn;
import spark.skins.spark.DefaultItemRenderer;
[Bindable]
private var columns:ArrayList;
[Bindable]
private var dp:ArrayCollection;
private function creationComplete():void
{
var myHistoryItems:Array = new Array;
myHistoryItems.push({filename: "Testing"});
dp = new ArrayCollection(myHistoryItems);
}
private function setColumns():void
{
var column:GridColumn
var myColumns:ArrayList = new ArrayList;
column = new GridColumn("filename");
column.headerText = "Filename";
column.itemRenderer = new
ClassFactory(DefaultItemRenderer);
myColumns.addItem(column);
columns = myColumns;
}
]]>
</fx:Script>
<s:DataGrid height="100%" width="100%" columns="{columns}"
dataProvider="{dp}"/>
</s:Application>
Here is the stack trace:
TypeError: Error #1009: Cannot access a property or method of a null object
reference.
at
spark.components::Group/addElement()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/Group.as:1395]
at
spark.components.gridClasses::GridLayout/createTypicalItemRenderer()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as:756]
at
spark.components.gridClasses::GridLayout/updateTypicalCellSizes()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as:891]
at
spark.components.gridClasses::GridLayout/measure()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as:452]
at
spark.components.supportClasses::GroupBase/measure()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as:1156]
at
mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::measureSizes()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/core/UIComponent.as:8514]
at
mx.core::UIComponent/validateSize()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/core/UIComponent.as:8438]
at
spark.components::Group/validateSize()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/Group.as:1065]
at
mx.managers::LayoutManager/validateSize()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/managers/LayoutManager.as:673]
at
mx.managers::LayoutManager/doPhasedInstantiation()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/managers/LayoutManager.as:800]
at
mx.managers::LayoutManager/doPhasedInstantiationCallback()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/managers/LayoutManager.as:1188]
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)