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>