代码之家  ›  专栏  ›  技术社区  ›  Adnan

DataGrid Flex中的Flex对齐复选框

  •  8
  • Adnan  · 技术社区  · 16 年前

    我使用一个项目渲染器在我的DataGrid中显示一个复选框;

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

    这很好,但是复选框是左对齐的;

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

    我怎样才能把它中间对齐?

    我用过了;

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

    但在这种情况下,我的代码会在中间对齐复选框,但不会在数据提供程序中保存数据。

    我错过什么了吗?

    6 回复  |  直到 12 年前
        1
  •  16
  •   splash    14 年前

    而不是使用 <mx:Box /> 使用 <mx:Canvas /> <s:Group /> (在Flex 4)。

    此外,设置 horizontalCenter="0" 在复选框上。

    例如:

    <mx:itemRenderer>
        <mx:Component>
            <mx:Canvas width="100%" height="100%">
                <mx:CheckBox selected="{data.visibleInd}" horizontalCenter="0" />
            </mx:Canvas>
        </mx:Component>
    </mx:itemRenderer>
    
        2
  •  5
  •   splash    16 年前

    只需使用DataGridColumn的 textAlign 风格:

    <mx:DataGridColumn headerText="Visible" textAlign="center">
        <mx:itemRenderer>
            <mx:Component>
                <mx:CheckBox selected="{data.visibleInd}"/>
            </mx:Component>
        </mx:itemRenderer>
    </mx:DataGridColumn>
    
        3
  •  0
  •   kaissun    14 年前

    我很肯定这会通过改变 mx:itemRenderer mx:itemEditor .

        4
  •  0
  •   Deepa D    13 年前

    请使用下面的提示将复选框和图像放置在列的中心。

    <mx:CheckBox paddingLeft="20" />
    <mx:Image horizontalAlign="center"/>
    
        5
  •  0
  •   Michael Baumanns    12 年前

    见:

    <?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>
    
        6
  •  -1
  •   Treby    16 年前

    尝试将复选框宽度设为100%