J'ai un problème étrange.Colonne Flex DataGrid trier par ordre décroissant ne fonctionne pas
Dans Flex 4, j'ai un Spark DataGrid et j'ai à la fois un rendu d'élément et une fonction de comparaison de type définie pour l'une des colonnes. Bizarrement, cette colonne ne sera pas triée par ordre décroissant.
Les données ne sont pas triées à l'origine. Cliquer sur l'en-tête de la colonne affiche la flèche «haut» et les données sont triées par ordre croissant. Cependant, cliquer à nouveau sur l'en-tête de colonne ne fait rien. La flèche "up" reste et les données restent triées dans l'ordre croissant.
J'ai débogué à travers le code et a trouvé que column.sortDescending dans la fonction de comparaison de tri est toujours false (devrait-il être vrai quand le tri décroissant devrait se produire?).
J'ai googlé ceci pendant un long moment et j'ai cherché ici mais je n'ai rien trouvé.
Vous avez des idées?
Merci d'avance.
// Modifier
Code simple Exemple:
fonction creationComplete initialise données à l'aide des valeurs aléatoires:
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
arrayData = new ArrayCollection();
var obj:Object;
for(var i:Number=0; i < 10; i++) {
obj = new Object();
obj.value1 = i;
obj.value2 = Math.floor(Math.random() * (1 + 100 - 1)) + 1;
obj.value3 = Math.floor(Math.random() * (1 + 100 - 1)) + 1;
arrayData.addItem(obj);
}
}
Datagrid définit les colonnes avec 4ème colonne ayant un rendu d'élément et trier comparer fonction définie.
<s:DataGrid x="122" y="142" width="391" height="223" requestedRowCount="4" dataProvider="{arrayData}">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="value1" headerText="Value 1"></s:GridColumn>
<s:GridColumn dataField="value2" headerText="Value 2"></s:GridColumn>
<s:GridColumn dataField="value3" headerText="Value 3"></s:GridColumn>
<s:GridColumn headerText="Value 3" sortable="true" itemRenderer="ItemRendererTest" sortCompareFunction="sortCompareFunc"></s:GridColumn>
</s:ArrayList>
</s:columns>
<s:typicalItem>
<fx:Object dataField1="Sample Data" dataField2="Sample Data" dataField3="Sample Data"></fx:Object>
</s:typicalItem>
</s:DataGrid>
article Code renderer:
override public function prepare(hasBeenRecycled:Boolean):void {
var columnString:String = data["value1"] + ":" + data["value2"] + ":" + data["value3"];
lblData.text = columnString;
}
comparer Trier Fonction:
private function sortCompareFunc(obj1:Object, obj2:Object, col:GridColumn):int {
var obj1String:String = obj1["value1"] + ":" + obj1["value2"] + ":" + obj1["value3"];
var obj2String:String = obj2["value1"] + ":" + obj2["value2"] + ":" + obj2["value3"];
var collator:SortingCollator = new SortingCollator();
return collator.compare(obj1String, obj2String);
}
Veuillez indiquer suffisamment de code pour illustrer ce problème. Un échantillon simple exécutable serait idéal. – JeffryHouser
Ajout d'un simple exemple de code –