我使用项呈示器在我的数据网格中显示一个复选框,如;
<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>
但是在这种情况下,我的代码确实在中间对齐了复选框,但是没有在我的数据提供者中保存数据。
我错过了什么吗?
答案 0 :(得分:16)
不使用<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>
答案 1 :(得分:5)
只需使用DataGridColumn的textAlign
样式:
<mx:DataGridColumn headerText="Visible" textAlign="center">
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox selected="{data.visibleInd}"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
答案 2 :(得分:0)
我非常确定这会将mx:itemRenderer
更改为mx:itemEditor
。
答案 3 :(得分:0)
请使用以下提示放置复选框&amp;图像位于列的中心。
<mx:CheckBox paddingLeft="20" />
<mx:Image horizontalAlign="center"/>
答案 4 :(得分:0)
见:
<?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>
答案 5 :(得分:-1)
尝试将复选框宽度设为100%