0

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

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

我错过了什么?

4

2 回答 2

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}"  />
于 2011-06-27T16:35:00.217 回答
0

您需要定义一个 RadioButtonGroup 以使此选择仅一种行为。我认为,如果您将此组放在项目渲染器中,您将无法实现所需的行为,因此您可能需要找出一种方法来从包含数据网格的容器中引用该组。

http://livedocs.adobe.com/flex/3/langref/mx/controls/RadioButtonGroup.html

于 2010-04-30T20:50:51.093 回答