我有一个数据网格,我想使用AS3(而不是mxml)添加一列单选按钮。我能够使用自定义的itemRenderer执行此操作。
var dgc:DataGridColumn = new DataGridColumn();
dgc.itemRenderer = new ClassFactory(com.mypackage.RadioBtnColumnItemRenderer);
在我的RadioBtnColumnItemRenderer.mxml中,我有一个带有radioButton的盒子......就像这样:
<?xml version="1.0" encoding="utf-8"?>
<mx:Box
xmlns:mx="http://www.adobe.com/2006/mxml"
horizontalAlign="center" verticalAlign="middle"
>
<mx:RadioButton id="btnRadio"
groupName="btnRadioSelect"
/>
</mx:Box>
当我运行应用程序时,单选按钮会显示在列中。但是,我不能只选择其中一个单选按钮。我可以选择所有这些,但我不想要这个......我希望能够选择一个,然后如果我选择另一个,那么第一个是未选中的,当前的一个被选中(就像你会期望单选按钮工作)。
我错过了什么?
答案 0 :(得分:2)
你其实非常接近。您只需要使用“properties”属性将对组的引用传递到类工厂。
var dgc:DataGridColumn = new DataGridColumn();
var ir: = new ClassFactory(com.mypackage.RadioBtnColumnItemRenderer);
var radioGroup:RadioButtonGroup = new RadioButtonGroup(this);
ir.properties = {radioGroup:radioGroup}; //THIS IS KEY
dgc.itemRenderer = ir;
现在在渲染器中,你需要在这样的地方设置属性。
<mx:Script>
[Bindable]
public var radioGroup:RadioButtonGroup;
</mx:Script>
<mx:RadioButton id="btnRadio" group="{radioGroup}" />
答案 1 :(得分:0)
您需要定义一个RadioButtonGroup,以便只选择一种行为。我想如果你把这个组放在项目渲染器中,你将无法实现所需的行为,所以你可能需要找到一种方法来从容纳数据网格的容器中引用该组。
http://livedocs.adobe.com/flex/3/langref/mx/controls/RadioButtonGroup.html