Flex - 截断显示为字符串的十进制值

Posted

技术标签:

【中文标题】Flex - 截断显示为字符串的十进制值【英文标题】:Flex - Truncate decimal values displayed as strings 【发布时间】:2015-11-03 08:31:42 【问题描述】:

我在我的 flex 应用程序中使用以下 AdvancedDataGrid 控件:

<mx:AdvancedDataGrid id="tableDataGrid"   editable="false"  dataProvider="tableDataGridLst"
                sortableColumns="true" draggableColumns="false" resizableColumns="true" headerStyleName="adgHeaderStyle"
                textAlign="center" headerWordWrap="true"   verticalScrollPolicy="on" headerHeight="50"
                rowCount="tableDataGridLst.length + 2" >
                <mx:columns>
                    <mx:AdvancedDataGridColumn  headerText="Actual Hours Iet" dataField="actualhoursIet" dataTipField="actualhoursIet"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="Actual Imp Iet" dataField="actualIet" dataTipField="actualIet"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="Actual Hours 3PGH" dataField="actualhours3pgh" dataTipField="actualhours3pgh"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="Actual Imp 3PGH" dataField="actual3pgh" dataTipField="actual3pgh"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="Actual Hours RH" dataField="actualhoursrh" dataTipField="actualhoursrh"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="Actual Imp RH" dataField="actualrh" dataTipField="actualrh"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />

                    <mx:AdvancedDataGridColumn  headerText="EMD AS" dataField="asValue" dataTipField="asValue"
                         textAlign="left"  headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="EMD TN" dataField="tnValue" dataTipField="tnValue"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="Year" dataField="year" dataTipField="year"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />

                    <mx:AdvancedDataGridColumn  headerText="Month(AS)" dataField="monthAS" dataTipField="monthAS"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="No of Act(AS)" dataField="noOfActASCost" dataTipField="noOfActASCost"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <!--<mx:AdvancedDataGridColumn  headerText="Total Hours(AS) " dataField="hoursAS" dataTipField="hoursAS"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    --><mx:AdvancedDataGridColumn  headerText="Month(TN)" dataField="monthTN" dataTipField="monthTN"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="No of Act(TN)" dataField="noOfActTNCost" dataTipField="noOfActTNCost"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="Total Hours(1S/1F/1B)(TN)" dataField="hoursTN" dataTipField="hoursTN"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="Status Tracking(TN)" dataField="statusTracking" dataTipField="statusTracking"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />
                    <mx:AdvancedDataGridColumn  headerText="BAU(TN)" dataField="BAU" dataTipField="BAU"
                         textAlign="left" headerWordWrap="true" fontSize="11" showDataTips="true" />

                </mx:columns>                                                   
            </mx:AdvancedDataGrid>      

基本上,我从 dataProvider tableDataGridList 获取数据,这些值基本上是小数,在条形图列上显示为字符串:

我要做的就是将这些十进制值截断为 int 值(如 100.56 到 100),然后显示它们。我该怎么做?

【问题讨论】:

【参考方案1】:

您需要定义图表 dataTipFunction 来解决此问题。

chartInstance.dataTipFunction = myDataTipFunction

private function myDataTipFunction(hd:HitData):String

  return  hd.item.label + "\n " + Math.round(parseInt(hd.item.y));                  

代替“hd.item.y”,您需要更新变量,例如“hd.item.yourVariable”。

通过这种方式,您可以自定义图表的数据提示。

希望这对你有用。

【讨论】:

感谢先生的回复。实际上,我对 flex 还是很陌生。那么我应该在哪里写这段代码呢?在我的 .mxml 文件的开头? 您应该将此代码放在实例化图表组件的同一文件中。如果它在脚本块内的 mxml 文件中,或者如果它在 Actionscript 文件(.as)文件中,则在您实例化图表组件的第一行并将 myDataTipFunction() 函数放置在同一类中的任何位置。

以上是关于Flex - 截断显示为字符串的十进制值的主要内容,如果未能解决你的问题,请参考以下文章

截断尾随零 datagridview 列

Eclipse 调试上的变量查看器会截断字符串值 [重复]

BYTE数据怎么转化成二进制字符串

sqlserver插入语句报“将截断字符串或二进制数据”怎么解决,怎么回事?

sql 查询语句截断问题

用户将在 SQL Server 中截断字符串或​​二进制数据