レイアウトを水平表示に設定しているリストが1つあります。
<s:List id="pagedList"
width="100%" height="100%"
verticalScrollPolicy="off" horizontalScrollPolicy="on"
pageScrollingEnabled="true"
itemRenderer="views.component.renderer.pageListItemRenderer"
skinClass="views.component.skin.PagedListSkin"
dataProvider="{acPages}"
scrollSnappingMode="center"
interactionMode="touch"
useVirtualLayout="true">
<s:layout>
<s:TileLayout orientation="rows" requestedRowCount="1"
columnWidth="{pagedList.width}" rowHeight="{pagedList.height}"
verticalGap="0" horizontalGap="0" />
</s:layout>
</s:List>
リストのdataProviderは
[Bindable]
private var acPages:ArrayCollection =
new ArrayCollection( [
{status:"Approved", method:"findRange(0,10)"},
{status:"Pending", method:"findRange(10,20)"},
{status:"Draft", method:"findRange(20,30)"},
{status:"Ready", method:"findRange(30,40)"},
{status:"Cancelled", method:"findRange(40,50)"},
{status:"Recommended", method:"findRange(50,60)"},
{status:"Resubmitted", method:"findRange(60,70)"}
]);
そして最後にitemRenderer
<fx:Script>
<![CDATA[
override public function set data(value:Object):void
{
super.data = value;
if (value== null)
return;
if (data.status)
mss.loadDgrid(data.method);
}
]]>
</fx:Script>
<s:Group width="100%" height="100%">
<s:layout>
<s:VerticalLayout gap="0" verticalAlign="middle" horizontalAlign="center" paddingBottom="30"/>
</s:layout>
<s:Group width="100%" contentBackgroundColor="0x000001">
<s:layout>
<s:HorizontalLayout horizontalAlign="center" verticalAlign="middle"/>
</s:layout>
<s:Label fontWeight="bold" text="<" paddingLeft="20"/>
<s:Spacer width="100%"/>
<s:Label fontWeight="bold" text="{data.status}"/>
<s:Spacer width="100%"/>
<s:Label fontWeight="bold" text=">" paddingRight="20"/>
</s:Group>
<s:DataGrid id="dgTaskGrid"
width="100%" height="100%"
verticalScrollPolicy="on"
dataProvider="{mss.dataProvider}">
<s:columns>
<s:ArrayList>
<s:GridColumn headerText="Application ID" dataField="phId" />
<s:GridColumn headerText="Status" dataField="phAppStatus" />
</s:ArrayList>
</s:columns>
</s:DataGrid>
</s:Group>
表示されるのは、リストに基づいて7ページが表示され、acPages ArrayCollection
ユーザーがリストを左右にスワイプして次/前のページに移動できることです。各ページにはDataGridがあり、それぞれのコンテンツをロードする必要があります。たとえば、[承認済み]ページには、にdata.method
割り当てられたを使用して独自のデータが表示されacPages
ます。次に、はWebサービスmss.loadDgrid
にを送信しHTTPRequest
、結果を返します。
現在、何が起こっているのか、リストには最初に承認済みデータが正しく表示されます。左にスワイプして次のページ(保留中のページ)を表示すると、ページは必要なデータで適切にレンダリングされます。しかし、前のページ(承認済みページ)にスワイプして戻ると、DataGridは保留中のページのデータを表示しています。リロードして戻すべきだと思っていましたが、そうではありません。これは残りのページに適用されます。
useVirtualLayout
セットfalse
を試してみましたtrue
が、何もうまくいかなかったようです。私はまた、set Data
機能を上書きし、リッスンしていましdataChange()
たitemRenderer
が、それでもリロードされません。
私が今欲しいのは、スワイプするたびに、itemRenderer
が更新され、目的のデータを取得します。
私はFlexの初心者なので、使用したアプローチが間違っている可能性があります。あなたの助けを楽しみにしています。
ありがとう、ジェイソン