无法在Datagrid中对齐数据

时间:2013-04-26 09:55:56

标签: actionscript-3 flex flex4 flex3 flex4.5

嗨我在渲染后遇到了spark数据网格列中数据对齐的问题。所有标题都向左对齐,但是我想做以下操作 1.列标题名称的中间位置。 2.将文本右对齐。 3.Freeze第一列,这样当我进行水平滚动时,第一列不应该水平移动。

在这方面的任何帮助都将非常感激。

谢谢和问候

<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                    xmlns:s="library://ns.adobe.com/flex/spark" 
                    xmlns:mx="library://ns.adobe.com/flex/mx"
                    clipAndEnableScrolling="true">

    <fx:Script>
        <![CDATA[
            import flashx.textLayout.formats.BackgroundColor;

            import mx.controls.Alert;
            import mx.states.SetStyle;

            private const POSITIVE_COLOR:uint = 0x000000; // Black
            private const NEGATIVE_COLOR:uint = 0xFF0000; // Red

            override public function prepare(hasBeenRecycled:Boolean):void {

                if (this.data) {
                    if (column.labelFunction != null ) {
                        lblData.text = column.labelFunction( data, column );

                        setStyle("color", (parseInt(this.data.st1) < 0) ? NEGATIVE_COLOR : POSITIVE_COLOR);

                    } else {
                        lblData.text = data[column.dataField];
                    }
                }
            }
        ]]>
    </fx:Script>

    <s:Label id="lblData" top="9" left="7" textAlign="right"/>

</s:GridItemRenderer>

1 个答案:

答案 0 :(得分:2)

  

2 /将文本对齐。

我将从最简单的一开始 在自定义项呈示器中,您仍然与左侧对齐(left="7")。您有两种方法可以解决此问题:

<s:Label id="lblData" top="9" right="7"/>

将标签向右对齐并导致文本溢出到左侧

<s:Label id="lblData" top="9" left="7" right="7" textAlign="right"/>

将使Label占用所有可用空间,将文本对齐并截断文本(如果文本太大)

  

1 /列标题名称的中间位置。

我认为唯一的方法是创建一个自定义headerRenderer。

  • 复制整个DefaultGridHeaderRenderer
  • 找到ID为“labelDisplay”
  • 的标签
  • 将其textAlign属性更改为center
  • 指定自定义headerRenderer:
    <s:GridColumn headerRenderer="path.to.CenteredHeaderRenderer"/>
  

3 /冻结第一列,这样当我进行水平滚动时,第一列不应该水平移动。

我担心这需要一些严重的黑客行为。如果你不想潜入并创建一个自定义的DataGrid,我认为你最好的选择是伪造它:

  • 创建一个列表来表示固定列
  • 创建一个DataGrid来表示其他列
  • 关闭列表的垂直滚动条:您想控制滚动网格
  • 绑定它们的垂直滚动位置:当DataGrid垂直滚动时,List必须跟随,反之亦然
  • 绑定所选项目
  • 进行一些蒙皮以使其看起来像一个DataGrid