actionscript 3 - 스크롤하는 동안 문제가 발생되는 DataGrid 항목 렌더




actionscript-3 flex (2)

나는 그것을 다음과 같이했다. selected = false 은 모두 selected = false 이고 변경 사항은 모두 선택됨.

<s:GridItemRenderer>
    <fx:Script>
        <![CDATA[
            import spark.components.RadioButtonGroup;

            [Bindable]
            private static var rbgGroup:RadioButtonGroup = new RadioButtonGroup();


            override public function set data( value:Object ) : void 
            {
                super.data = value;
            }

            protected function rdId_changeHandler(event:Event):void {

                if(outerDocument.arrList != null)
                {
                    for each(var obj:Object in outerDocument.arrList)
                    {
                        obj.selected = false;
                    }
                }

                data.selected=true;
            }

        ]]>
    </fx:Script>
    <s:RadioButton id="rdId" group="{pndcGroup}" selected="{data.selected}" change="rdId_changeHandler(event)" />
</s:GridItemRenderer>

그것이 도움이되기를 바랍니다.

나는 다음과 같은 방법으로 스파크 DataGrid 내부 라디오 버튼을 사용하고 있습니다.

<s:DataGrid dataProvider="{arrList}" >
<s:columns>
<mx:ArrayList>
<mx:source>
    <s:GridColumn width="90" headerText="radio">
     <s:itemRenderer >
     <fx:Component>
        <s:GridItemRenderer>
                <fx:Script>
                <![CDATA[
                    override public function set data( value:Object ) : void 
                    {
                        super.data = value;
                        rdId.group=outerDocument.rbgGroup;
                    }
                ]]>
                </fx:Script>
          <s:RadioButton id="rdId" />
        </s:GridItemRenderer>
        </fx:Component>
        </s:itemRenderer>
    </s:GridColumn>

     <s:GridColumn headerText="Name" dataField="name" />
    </mx:source>
  </mx:ArrayList>
</s:columns>
</s:DataGrid>

내가 선택한 하나의 radiobutton에 대한 그룹을 만들었습니다.

<s:RadioButtonGroup id="rbgGroup" />

이 잘 작동합니다. 하지만, 먼저 라디오를 선택하고 스크롤하면 다른 라디오 버튼이 자동으로 선택되고 처음으로 제거됩니다.

이처럼 많은 다른 게시물을 확인했지만 작동하지 않는 것 같습니다.

스크롤 할 때만 문제가 발생했습니다.
어떤 도움이라도 대단히 감사하겠습니다.


더 많은 가능성이 가상 레이아웃과 관련이 있습니다.

가상 및 비 가상 :

가상 레이아웃과 비 가상 레이아웃의 가장 큰 차이점은 생성되는 렌더러의 수입니다. 가상 레이아웃이 아닌 경우 시작시 모든 항목에 대한 렌더러가 만들어지며 가상 레이아웃에서는 현재 뷰에있는 항목에 대한 렌더러 만 생성합니다. 수천 개의 항목이있는 dataProviders가있을 때 상당한 성능 향상을 얻을 수 있지만 주어진 시간에 소수만 표시됩니다. 스파크 Datagrid는 기본적으로 가상 레이아웃을 켜는 레이아웃을 사용합니다.

불행히도 Datagrid에서는 이것을 쉽게 변경할 수 없습니다. 일반적인 솔루션은 선택 상태를 데이터에 저장하고 이미 재정의 한 설정 데이터를 저장하고 데이터를 기반으로 선택 상태를 설정하는 것입니다.

의견에있는 요청 당 코드 샘플 :

 <s:GridItemRenderer>
     <fx:Script>
          <![CDATA[
                override public function set data( value:Object ) : void 
                {
                    super.data = value;
                    rdId.group=outerDocument.rbgGroup;

                    //just like you are setting the group, mark it as selected based on the data. 
                    //Update your data when it becomes selected.
                    rdId.selected = value.selected;
                }

                protected function rb_clickHandler(event:Event):void {
                    data.selected = rbId.selected;
                }
            ]]>
            </fx:Script>
      <s:RadioButton id="rdId" change="rdId_clickHandler(event)"/>
    </s:GridItemRenderer>