2013-04-26 49 views
0

您好,我在渲染之後Spark數據網格列中的數據對齊問題。所有標題都向左對齊,但我想要執行以下操作: 1.列標題名稱中間。 2.將文本對齊到右側。 3.凍結第一列,以便當我做水平滾動時,第一列不應該水平移動。無法在數據網格中對齊數據

在這方面的任何幫助將非常感謝。

感謝和問候

<?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> 

回答

2

2 /對齊文本的權利。

我將從最簡單的一個開始。
在您的自定義項目渲染器中,您仍然對齊到左側(left="7")。你有兩個選擇,以解決這個問題:

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

將調整標籤右邊,導致文本溢出到左

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

將使標籤採取一切可用的空間,對齊文本如果它太大,則截斷文本

1 /中間列標題名稱。

我認爲唯一的方法是創建一個自定義headerRenderer。

  • 複製整個DefaultGridHeaderRenderer
  • 找到ID爲 「labelDisplay的」
  • 改變其textAlign屬性center
  • 分配定製的HeaderRenderer標籤:
    <s:GridColumn headerRenderer="path.to.CenteredHeaderRenderer"/>

3 /凍結第一列,以便當id o水平滾動時,第一列不應水平移動。

恐怕這將需要一些嚴重的黑客行爲。如果你不想潛水,並創建一個定製的DataGrid,我認爲最好的方法是假的吧:

  • 創建一個列表來表示固定柱
  • 創建DataGrid代表其他列
  • 關閉名單的垂直滾動條:你想控制研究中通過網格滾動
  • 結合自己的垂直滾動位置:在DataGrid垂直滾動時,列表必須遵循反之亦然
  • 綁定自己選擇的項目
  • 做一些剝皮,使它看起來像一個DataGrid的
+1

我有一點補充的是,原來的MX DataGrid中確實有可用於冷凍一列lockedColumnCount屬性:HTTP://help.adobe。 com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/dataGridClasses/DataGridBase.html#lockedColumnCount。如果這很重要,切換回MX組件可能比嘗試執行解決方法更容易。 – JeffryHouser 2013-04-26 13:08:48

+0

@ www.Flextras.com謝謝。不知道那個。在Flex 3中沒有做太多工作。似乎有一些東西我錯過了。 – RIAstar 2013-04-26 13:21:17

+0

如果要鎖定行,則還有lockedRowCount。這兩者都與MX DataGrid一樣「防彈」,無論值多少錢。 – JeffryHouser 2013-04-26 15:10:23