2010-06-30 30 views
8

Veri kılavuzumda bir onay kutusunu görüntülemek için bir öğe oluşturucu kullanıyorum;Datagrid'de Flex align onay kutusu Flex

<mx:DataGridColumn headerText="Visible" dataField="visibleInd" width="48" 
itemRenderer="mx.controls.CheckBox" 
rendererIsEditor="true" 
editorDataField="selected" 
/> 

Ve bu iyi çalışıyor, ancak onay kutusu gibi hizalanmış;

alt text http://img96.imageshack.us/img96/9239/93364060.jpg

Nasıl ortada o hizalayabilirsiniz?

Kullandım;

  <mx:DataGridColumn headerText="Visible" dataField="visibleInd" width="48" 
           editorDataField="selected" 
           > 
      <mx:itemRenderer> 
       <fx:Component> 
        <mx:Box width="100%" height="100%" 
          horizontalAlign="center" verticalAlign="middle"> 
         <mx:CheckBox selected="{data.visibleInd}" /> 
        </mx:Box> 
       </fx:Component> 
      </mx:itemRenderer> 

Ancak bu durumda benim kod ortada onay kutusunu hizaya yapar ama benim dataprovider verileri kaydetmez

.

Bir şey mi eksik?

+0

sizin için bunlardan herhangi çalışma? Eğer öyleyse, neden aşk yok? :) –

cevap

16

<mx:Box /> kullanmak yerine, <mx:Canvas /> veya <s:Group /> kullanın (Flex 4'te).

Ayrıca, horizontalCenter="0" onay kutusunu işaretleyin. Örneğin

:

<mx:itemRenderer> 
    <mx:Component> 
     <mx:Canvas width="100%" height="100%"> 
      <mx:CheckBox selected="{data.visibleInd}" horizontalCenter="0" /> 
     </mx:Canvas> 
    </mx:Component> 
</mx:itemRenderer> 
0

Bu durumun mx:itemRenderer değerini mx:itemEditor değiştirerek çalışacağından eminim.

+1

Flex 4 altında, bu, onay kutusu yerine "1" görüntülenmesine neden olur. Kuşkusuz, "1" ortalanmış. Ama bu küçük teselli. –

-1

100% işaretleme kutusu genişliği yapmayı deneyin

+1

Bu hiçbir şey yapmıyor. En azından, Flex 4 altında hiçbir şey yapmaz. –

+0

Flex 3.6'da çalışmaz –

5

Basitçe DataGridColumn en textAlign Stil kullanın:

<mx:DataGridColumn headerText="Visible" textAlign="center"> 
    <mx:itemRenderer> 
     <mx:Component> 
      <mx:CheckBox selected="{data.visibleInd}"/> 
     </mx:Component> 
    </mx:itemRenderer> 
</mx:DataGridColumn> 
+5

Bu Flex 3'te çalışır. Flex 4'te çalışmaz. –

0

Lütfen onay kutusu & görüntü yerleştirmek için aşağıdaki ipucu kullanın sütunun merkezi.

<mx:CheckBox paddingLeft="20" /> 
<mx:Image horizontalAlign="center"/> 
0

Bkz: Aşağıda sizin için iyi cevaplar var

<?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"> 
     <fx:Script> 
      <![CDATA[ 
       override public function prepare(hasBeenRecycled:Boolean):void { 
        if(data != null){ 
         chb.selected = data[column.dataField]; 
        } 
       } 

       protected function chb_clickHandler(event:MouseEvent):void{ 
        data[column.dataField] = !chb.selected; 
       } 
      ]]> 
     </fx:Script> 
     <s:CheckBox id="chb" click="chb_clickHandler(event)" horizontalCenter="0" verticalCenter="0"/> 
    </s:GridItemRenderer>