0

我使用 itemRenderer 在 advancedDataGrid 列中创建单选按钮的行为不可预测。在 Adob​​e Flex 中创建 RadioButtons 列中报告了类似的问题 。我尝试使用相同的过程,即将每个单选按钮 selectedValue 和 value 属性与关联 bean 的属性中指定的属性绑定,但仍然面临问题。

按钮更改值!选中的按钮变为取消选中状态,未选中的按钮变为选中状态。

这是我的高级数据网格的代码:

<mx:AdvancedDataGrid id="adDataGrid_rptdata" 
                width="100%" height="100%"
                dragEnabled="false" sortableColumns="false" 
                treeColumn="{action}"
                liveScrolling="false"
                displayItemsExpanded="true" >

                <mx:dataProvider>
                    <mx:HierarchicalData source="{this.competenceCollection}" childrenField="competenceCriteria"/>
                </mx:dataProvider>

                <mx:columns>
                    <mx:AdvancedDataGridColumn headerText="" id="action" dataField="criteriaName" />

                    <mx:AdvancedDataGridColumn headerText="Periode 1" dataField="" width="200">
                        <mx:itemRenderer>
                            <mx:Component>
                                <mx:HBox horizontalAlign="center" width="100%" verticalAlign="middle">                                  
                                    <mx:RadioButton name="period1" value="{data}" selected="{data.period1}" group="{data.radioBtnGrpArray[0]}" visible="{data.showRadioButton}" />
                                </mx:HBox>
                            </mx:Component>
                        </mx:itemRenderer>
                    </mx:AdvancedDataGridColumn>

                    <mx:AdvancedDataGridColumn headerText="Periode 2" dataField="" width="200">
                        <mx:itemRenderer>
                            <mx:Component>
                                <mx:HBox horizontalAlign="center" width="100%" verticalAlign="middle">                                  
                                    <mx:RadioButton name="period2" value="{data}" selected="{data.period2}" group="{data.radioBtnGrpArray[1]}" visible="{data.showRadioButton}" />
                                </mx:HBox>
                            </mx:Component>
                        </mx:itemRenderer>
                    </mx:AdvancedDataGridColumn>

                    <mx:AdvancedDataGridColumn headerText="Periode 3" dataField="" width="200">
                        <mx:itemRenderer>
                            <mx:Component>
                                <mx:HBox horizontalAlign="center" width="100%" verticalAlign="middle">                                  
                                    <mx:RadioButton name="period3" value="{data}" selected="{data.period3}" group="{data.radioBtnGrpArray[2]}" visible="{data.showRadioButton}" />
                                </mx:HBox>
                            </mx:Component>
                        </mx:itemRenderer>
                    </mx:AdvancedDataGridColumn>
                </mx:columns>
            </mx:AdvancedDataGrid>

在这方面,任何解决方法都受到高度赞赏!

4

1 回答 1

0

选中的按钮变为取消选中状态,未选中的按钮变为选中状态。

selected这个问题是否仅发生在用户手动更改状态的那些单选按钮上?在这种情况下,这是因为当 a被重用时,flex 会selected根据声明中提到的值重置其状态。RadioButton因此,即使您在 Periode 1 列中选择/取消选择比率按钮,{data.period1}当您滚动离开并返回时,flex 也会将其重置。使列可编辑以将修改保存回数据提供者可能会起作用。尝试将列声明更改为:

<mx:AdvancedDataGridColumn headerText="Periode 1" dataField="" width="200" 
     editable="true" rendererIsEditor="true" editorDataField="selected">

编辑:试试这个 - 尝试在选择单选按钮时更改数据提供者。从内存编写且未经测试的代码 - 可能包含错误。

<mx:AdvancedDataGridColumn headerText="Periode 1" dataField="" width="200">
  <mx:itemRenderer>
    <mx:Component>
      <mx:HBox horizontalAlign="center" width="100%"
        verticalAlign="middle">
        <mx:RadioButton id="rb" name="period1" value="{data}" 
          selected="{data.period1}" 
          group="{data.radioBtnGrpArray[0]}" visible="{data.showRadioButton}" 
          change="outerDocument.handleRadio1(this);"/>
      </mx:HBox>
    </mx:Component>
  </mx:itemRenderer>
</mx:AdvancedDataGridColumn>
//in a script tag outside the datagrid.
public function handleRadio1(renderer:IListItemRenderer):void
{
  var index:Number = adDataGrid_rptdata.itemRendererToIndex(renderer);
  this.competenceCollection[i].period1 = renderer.rb.selected;
}
于 2009-09-25T06:45:35.667 回答