【问题标题】:FLEX - Custom component Footer-Datagrid - Itemrenderer - "Set data" function not workingFLEX - 自定义组件 Footer-Datagrid - Itemrenderer - “设置数据”功能不起作用
【发布时间】:2015-07-07 06:25:59
【问题描述】:

我正在尝试使用此类定义的页脚实现数据网格:

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>

我的 itemrenderer 出现错误。

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

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

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

【问题讨论】:

    标签: actionscript-3 apache-flex datagrid itemrenderer


    【解决方案1】:

    我不知道为什么,但是对于这个包,我必须添加一个测试才能查看对象属性是否存在:

    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");
        }
    }               
    

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

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 2011-01-26
      • 1970-01-01
      • 2012-04-18
      • 2011-06-05
      • 2016-12-30
      • 2012-02-11
      • 2018-02-23
      • 2013-03-01
      相关资源
      最近更新 更多