数据网格Flex中的Flex Align复选框

gupuwyp2  于 2022-09-21  发布在  Apache
关注(0)|答案(6)|浏览(153)

我使用项呈现器在我的数据网格中显示一个复选框,如;

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

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

我怎么才能把它中间对齐呢?

我用过;

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

但在本例中,我的代码将复选框居中对齐,但不会将数据保存在我的数据提供程序中。

我是不是遗漏了什么?

hc8w905p

hc8w905p1#

不使用<mx:Box />,而使用<mx:Canvas /><s:Group />(在Flex4中)。

此外,在复选框上设置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>
e0uiprwp

e0uiprwp2#

只需使用DataGridColumn的textAlign样式:

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

mznpcxlj3#

我非常确定将mx:itemRenderer更改为mx:itemEditor将会起作用。

pieyvz9o

pieyvz9o4#

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

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

1yjd4xko5#

请参见:

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

mum43rcc6#

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

相关问题