S'il y a des erreurs en anglais, je voudrais m'excuser.
Je veux faire défiler la grille de données par programmation en cliquant sur l'événement buttonbar.
Comment faire pour paginer mx.DataGrid par programme?
Le code suivant fonctionne, mais il défile un par un. Ce dont j'ai besoin, c'est d'un défilement de pages, comme cliquer sur la zone de défilement horizontale vide.
Toute aide serait grandement appréciée.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.events.ItemClickEvent;
import mx.collections.ArrayCollection;
private var arr:ArrayCollection = new ArrayCollection([
{COL1:"aaa",COL2:"bbb",COL3:"ccc",COL4:"ddd",COL5:"eee",COL6:"fff",COL7:"ggg",COL8:"hhh",COL9:"iii",COL10:"jjj",COL11:"kkk",COL12:"lll",COL13:"mmm",COL14:"nnn",COL15:"ooo",COL16:"ppp",COL17:"qqq",COL18:"rrr",COL19:"sss",COL20:"ttt"}
]);
public function init(): void
{
scrollController.dataProvider=["|<", "<", ">", ">|"];
grid.dataProvider = arr;
}
public function doScroll(event: ItemClickEvent): void
{
if (event.index ==0)
{
// force move to left end.
grid.horizontalScrollPosition = 0;
}
else if (event.index ==1){
// move left one by one
// *** I want modify here.
if (grid.horizontalScrollPosition > 0){
grid.horizontalScrollPosition -= 1;
}
}
else if (event.index ==2){
// move right one by one
// *** I want modify here too.
if (grid.horizontalScrollPosition < grid.maxHorizontalScrollPosition){
grid.horizontalScrollPosition += 1;
}
}
else{
// force move to right end.
if (grid.horizontalScrollPosition < grid.maxHorizontalScrollPosition){
grid.horizontalScrollPosition = grid.maxHorizontalScrollPosition;
}
}
}
]]>
</mx:Script>
<mx:ButtonBar id="scrollController" y="0" itemClick="doScroll(event)"/>
<mx:DataGrid id="grid" y="30" width="340" horizontalScrollPolicy="on">
<mx:columns>
<mx:DataGridColumn headerText="COL1" dataField="COL1" width="100"/>
<mx:DataGridColumn headerText="COL2" dataField="COL2" width="100"/>
<mx:DataGridColumn headerText="COL3" dataField="COL3" width="100"/>
<mx:DataGridColumn headerText="COL4" dataField="COL4" width="100"/>
<mx:DataGridColumn headerText="COL5" dataField="COL5" width="100"/>
<mx:DataGridColumn headerText="COL6" dataField="COL6" width="100"/>
<mx:DataGridColumn headerText="COL7" dataField="COL7" width="100"/>
<mx:DataGridColumn headerText="COL8" dataField="COL8" width="100"/>
<mx:DataGridColumn headerText="COL9" dataField="COL9" width="100"/>
<mx:DataGridColumn headerText="COL10" dataField="COL10" width="100"/>
<mx:DataGridColumn headerText="COL11" dataField="COL11" width="100"/>
<mx:DataGridColumn headerText="COL12" dataField="COL12" width="100"/>
<mx:DataGridColumn headerText="COL13" dataField="COL13" width="100"/>
<mx:DataGridColumn headerText="COL14" dataField="COL14" width="100"/>
<mx:DataGridColumn headerText="COL15" dataField="COL15" width="100"/>
<mx:DataGridColumn headerText="COL16" dataField="COL16" width="100"/>
<mx:DataGridColumn headerText="COL17" dataField="COL17" width="100"/>
<mx:DataGridColumn headerText="COL18" dataField="COL18" width="100"/>
<mx:DataGridColumn headerText="COL19" dataField="COL19" width="100"/>
<mx:DataGridColumn headerText="COL20" dataField="COL20" width="100"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
Mise à jour le 16 septembre 17h15 (JST)
J'ai écrit ce code dans CustomDateGrid (mx.DataGrid étendu) et appeler à partir ButtonBar. Mais rien ne s'est produit.
public function scrollToRightPage(): void{
var delta:Number = this.horizontalScrollBar.pageScrollSize != 0 ? this.horizontalScrollBar.pageScrollSize : this.horizontalScrollBar.pageSize;
var direction:Number = 1;
var scrollPosition:Number = this.horizontalScrollPosition + direction * delta;
var oldPosition: Number = this.horizontalScrollPosition;
var event:ScrollEvent = new ScrollEvent(ScrollEvent.SCROLL);
event.detail = ScrollEventDetail.PAGE_RIGHT;
event.position = scrollPosition;
event.delta = scrollPosition - oldPosition;
event.direction = ScrollBarDirection.HORIZONTAL;
this.horizontalScrollBar.dispatchEvent(event);
// Call scrollHandler(the protected function defined at DataGrid.as) instead of horizontalScrollBar.dispatchEvent was also nothing occurred.
// scrollHandler(event);
}