如何:在AS3中自定义DataGridColumn ItemRenderer中的RadioButton

时间:2010-04-30 18:59:01

标签: flex datagrid itemrenderer radio-button

我有一个数据网格,我想使用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>

当我运行应用程序时,单选按钮会显示在列中。但是,我不能只选择其中一个单选按钮。我可以选择所有这些,但我不想要这个......我希望能够选择一个,然后如果我选择另一个,那么第一个是未选中的,当前的一个被选中(就像你会期望单选按钮工作)。

我错过了什么?

2 个答案:

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