0

itemRenderer を使用して、advancedDataGrid 列にラジオ ボタンを作成するという予期しない動作が発生しています。同様の問題が、 Creating a column of RadioButtons in Adob​​e Flex で報告されてい ます。同じ手順を使用しようとしました。つまり、すべてのラジオ ボタンの selectedValue および value 属性を、関連する Bean のプロパティで指定されたプロパティにバインドしますが、まだ問題に直面しています。

ボタンは値を変更します!選択されたボタンは選択解除され、選択されていないボタンは選択されます。

これが私のadvancedDataGridのコードです:

<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が再利用されselectedたときに、宣言で言及された値に基づいてflex がその状態をリセットするためです。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 に答える