CalculateRuleにプロパティ null が見つからず、デフォルト値もありません
データグリッドの行ごとに削除ボタンを追加したところ、以下のエラーがコンソールに表示された。
ReferenceError: Error #1069: example.CalculateRule にプロパティ null が見つからず、デフォルト値もありません。 at mx.controls::Button/set data()[C:\dev\flex_201_ja\sdk\frameworks\mx\controls\Button.as:818] at mx.controls::DataGrid/http://www.adobe.com/2006/flex/mx/internal::setupRendererFromData()[C:\dev\flex_201_ja\sdk\frameworks\mx\controls\DataGrid.as:1444] at mx.controls::DataGrid/mx.controls:DataGrid::commitProperties()[C:\dev\flex_201_ja\sdk\frameworks\mx\controls\DataGrid.as:1369] at mx.core::UIComponent/validateProperties()[C:\dev\flex_201_ja\sdk\frameworks\mx\core\UIComponent.as:5301] at mx.managers::LayoutManager/mx.managers:LayoutManager::validateProperties()[C:\dev\flex_201_ja\sdk\frameworks\mx\managers\LayoutManager.as:517] at mx.managers::LayoutManager/mx.managers:LayoutManager::doPhasedInstantiation()[C:\dev\flex_201_ja\sdk\frameworks\mx\managers\LayoutManager.as:667] at Function/http://adobe.com/AS3/2006/builtin::apply() at mx.core::UIComponent/mx.core:UIComponent::callLaterDispatcher2()[C:\dev\flex_201_ja\sdk\frameworks\mx\core\UIComponent.as:7910] at mx.core::UIComponent/mx.core:UIComponent::callLaterDispatcher()[C:\dev\flex_201_ja\sdk\frameworks\mx\core\UIComponent.as:7853]
<mx:DataGrid id="calculateRuleDataGrid" editable="true" width="100%" height="100%" dataProvider="{model.calculateRules}" itemEditEnd="helper.onItemEditEndCalculateRuleDataGrid(event)"> <mx:columns> <mx:DataGridColumn headerText="名称" dataField="name" width="300"/> <mx:DataGridColumn headerText="SEQ" dataField="seq" editable="false" width="50"/> <mx:DataGridColumn headerText="行削除" width="30"> <mx:itemRenderer> <mx:Component className="calcruleButton1"> <mx:Button icon="@Embed('../img/delete.png')" width="12" height="5"/> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> </mx:columns> </mx:DataGrid>
dataProviderにセットしてある配列から項目を取得し、dataFieldに設定されているプロパティの値を取得するが、行削除列にdataFieldがないため、data.nullの値を取得しようとするため、エラーが発生する模様。グリッドには表示しないが、ダミーでdataに存在するプロパティを設定することによりエラーが回避できる。
<mx:DataGridColumn headerText="行削除" width="30" dataField="name"> <!-- dataFieldを追加 -->