FLEX - 自定义组件页脚-数据网格 - 项目渲染器 - "Set data"函数不起作用



我正在尝试实现一个带有页脚的数据网格,如此类所定义的那样:

https://github.com/ncdc/flex-footer-datagrid

它工作得很好。尽管如此,在第二步中,我尝试使用此包在一列上实现一个 itemrenderer,以便以特定样式显示值。

这是我的代码

        <footerDataGrid:FooterDataGrid
            id="dg_imActivity" width="100%" 
            dropEnabled="true"
            dragDrop="model.checkIfActivityExixts(event)"
            dataProvider="{grant!=null?model.activities.grantItems:null}" 
            editable="true"
            itemEditEnd="EditBudgetValue(event)"
            rowCount="{grant!=null?dg_imActivity.dataProvider.length + 2:6}"
            >
            <footerDataGrid:columns>
                <mx:DataGridColumn headerText="Title" dataField="title" showDataTips="true" dataTipField="title" editable="false"/>
                <mx:DataGridColumn headerText="Type" dataField="type" showDataTips="true" dataTipField="type" editable="false"/>
                <mx:DataGridColumn headerText="Pr. Area" dataField="prioAreaName" showDataTips="true" dataTipField="prioAreaName" editable="false"/>
                <mx:DataGridColumn headerText="Unit" dataField="unitName" showDataTips="true" dataTipField="unitName" editable="false">
                        <mx:itemRenderer>
                            <fx:Component>                                  
                                <mx:HBox paddingLeft="2" horizontalScrollPolicy="off">
                                    <fx:Script>
                                        <![CDATA[
                                            import mx.controls.Alert;
                                            import mx.states.SetStyle;
                                            override public function set data( value:Object ) : void {
                                                super.data = value;
                                                if( data.unitName != outerDocument.user.profile.organ.name ) {
                                                    setStyle("color",0xFF0000);
                                                    setStyle("fontWeight", "bold");
                                                }else{
                                                    setStyle("color",0xffffff);
                                                    setStyle("fontWeight", "normal");
                                                }
                                            }
                                        ]]>
                                    </fx:Script>
                                    <mx:Label text="{data.unitName}" width="100%"/>
                                </mx:HBox>
                            </fx:Component>
                        </mx:itemRenderer>

                </mx:DataGridColumn>
                <mx:DataGridColumn headerText="Value" dataField="budgetValue" id="budgetValue" showDataTips="true" dataTipField="budgetValue" editable="true"/>
            </footerDataGrid:columns> 
            <footerDataGrid:footer>
                <footerDataGrid:SummaryFooter>
                    <footerDataGrid:columns>
                        <footerDataGrid:SummaryColumn  label='Total'/>
                        <footerDataGrid:SummaryColumn />
                        <footerDataGrid:SummaryColumn />
                        <footerDataGrid:SummaryColumn />                                                        
                        <footerDataGrid:SummaryColumn operation='sum' precision='2'/>
                    </footerDataGrid:columns>
                </footerDataGrid:SummaryFooter>

                <footerDataGrid:SummaryFooter>
                    <footerDataGrid:columns>
                        <footerDataGrid:SummaryColumn label='Remaining Budget'/>
                        <footerDataGrid:SummaryColumn />
                        <footerDataGrid:SummaryColumn />
                        <footerDataGrid:SummaryColumn />                                                            
                        <footerDataGrid:SummaryColumn labelFunction='remainingBudgetActivity' dataColumn='{budgetValue}'/>
                    </footerDataGrid:columns>
                </footerDataGrid:SummaryFooter>
            </footerDataGrid:footer>
        </footerDataGrid:FooterDataGrid>

我收到项目渲染器的错误。

ReferenceError: Error #1069: Property unitName not found on mx.controls.dataGridClasses.DataGridColumn and there is no default value.

显示阿贝尔时不带样式。一切都正确定义。显然方法集 data() 被正确调用,但它无法检索数据对象,我不知道原因。此外,我已经尝试使用默认数据网格并且它正在工作。

你能告诉我如何解决这个问题吗?我需要使用此包,因为我需要在数据网格中显示页脚。

我不知道

为什么,但在这个包中,我必须添加一个测试以查看对象属性是否存在:

if( "unitName" in data){
    if( data.unitName != outerDocument.user.profile.organ.name ) {
        setStyle("color",0xFF0000);
        setStyle("fontWeight", "bold");
    }else{
        setStyle("color",0x000000);
        setStyle("fontWeight", "normal");
    }
}               

现在一切都在正常。这很奇怪,因为使用默认数据网格,不需要测试。

最新更新