| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Apr 2009
Beiträge: 135
| Datagrid via Code sortieren
Hallo Leute, gibt es eine einfache Variante, in Flex ein DataGrid zu sortieren? Normalerweise klickt der User zum Sortieren oben auf den Header des DataGrids. Kann ich diese Sortierung auch irgendwie im Code anstoßen? Also via Actionscript oder mxml? Wäre super, wenn ihr da etwas wüsstet. Ich möchte immer bei einem neuen Eintrag automatisch sortieren lassen. Es muss aber nicht voll automatisch sein. Ich könnte also auch jedesmal eine Funktion aufrufen. Ich weiß nur nicht, wie ich es sortieren lassen kann. Danke |
| | |
| | #2 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 11.856
|
Ein Blick in die API und du hättest dir Zeit gespart: Code: sortable="true|false" sortCompareFunction="No default" sortDescending="false|true"
__________________ github: https://github.com/floriansalihovic/L18nExample <florian xmlns:speaker="www.beyondtellerrand.com/ffk11/speakers_sessions" xmlns:trainer="http://www.beyondtellerrand.com/ffk11/workshops" /> and @ g+ |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Apr 2009
Beiträge: 135
|
hmm ok... ich Vollpfosten hatte keine SortAndCompareFunction. Actionscript: Code: private var daten:Array = new Array();
private var userAlter:Number;
private var userName:String;
var meinObject:Object = new Object();
meinObject.name = userName;
meinObject.alter = userAlter;
daten.push(meinObject);
uebersicht.dataProvider = daten;
private function mycompare(itemA:Number, itemB:Number):int {
return ObjectUtil.numericCompare(itemA, itemB);
} Code: <mx:DataGrid left = "10" right = "10" id = "uebersicht" height = "100%" bottom = "10" top = "84"> <mx:columns> <mx:DataGridColumn headerText = "Name" dataField = "name"/> <mx:DataGridColumn id="test" headerText = "" dataField = "alter" width = "40" sortCompareFunction="compare" sortable="true" sortDescending="true"/> </mx:columns> </mx:DataGrid> |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Oct 2008
Beiträge: 148
|
hi, wenn du bei zb. bei personen nach alter sortierst, macht es sinn auch nach dem namen zusätzlich zu sortieren, weil du sonst unter umständen doch keine visuell logische reihenfolge hast... kannst ja mal ausprobieren mit compare und compare1 als funktion, dann siehst du den unterschied... gerade bei personen würde ich auch noch auf den nachnamen gehen, vor dem vornamen... dann kommt auch mit sicherheit "peter pan" vor "peter panzer" ... ;-) Code: <?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication applicationComplete="init()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.utils.ObjectUtil;
import mx.collections.ArrayCollection;
[Bindable]
private var persons : ArrayCollection;
private function init():void{
this.persons = new ArrayCollection();
this.persons.addItem( {name:"Hans",alter:12} );
this.persons.addItem( {name:"Hans",alter:15} );
this.persons.addItem( {name:"Hans",alter:17} );
this.persons.addItem( {name:"Paul",alter:12} );
this.persons.addItem( {name:"Paul",alter:15} );
this.persons.addItem( {name:"Paul",alter:17} );
this.persons.addItem( {name:"Peter",alter:12} );
this.persons.addItem( {name:"Peter",alter:15} );
this.persons.addItem( {name:"Peter",alter:17} );
}
private function compare(itemA:Object,itemB:Object):int{
var alterCompare : int = ObjectUtil.numericCompare( itemA.alter,itemB.alter);
return alterCompare;
}
private function compare1(itemA:Object,itemB:Object):int{
var compare : int = ObjectUtil.numericCompare( itemA.alter,itemB.alter);
if( compare == 0){
compare = ObjectUtil.stringCompare( itemA.name,itemB.name, true);
}
return compare;
}
]]>
</mx:Script>
<mx:DataGrid dataProvider="{this.persons}" left = "10" right = "10" id = "uebersicht" height = "100%" bottom = "10" top = "84">
<mx:columns>
<mx:DataGridColumn headerText = "Name" dataField = "name"/>
<mx:DataGridColumn id="test" headerText = "" dataField = "alter" width = "40" sortCompareFunction="compare1" sortable="true" sortDescending="true"/>
</mx:columns>
</mx:DataGrid>
</mx:WindowedApplication> |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Oct 2008
Beiträge: 148
|
hi, also bei mir geht das so. entscheidend ist einfach, dass du schon einmal nach der spalte alter sortiert hast. die neuen personen werden dann ans richtige ort geaddet.... Code: <?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication applicationComplete="init()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.utils.ObjectUtil;
import mx.collections.ArrayCollection;
[Bindable]
private var persons : ArrayCollection;
private function init():void{
this.persons = new ArrayCollection();
this.persons.addItem( {name:"Hans",alter:12} );
this.persons.addItem( {name:"Hans",alter:15} );
this.persons.addItem( {name:"Hans",alter:17} );
this.persons.addItem( {name:"Paul",alter:12} );
this.persons.addItem( {name:"Paul",alter:15} );
this.persons.addItem( {name:"Paul",alter:17} );
this.persons.addItem( {name:"Peter",alter:12} );
this.persons.addItem( {name:"Peter",alter:15} );
this.persons.addItem( {name:"Peter",alter:17} );
}
private function compare(itemA:Object,itemB:Object):int{
var alterCompare : int = ObjectUtil.numericCompare( itemA.alter,itemB.alter);
return alterCompare;
}
private function compare1(itemA:Object,itemB:Object):int{
var compare : int = ObjectUtil.numericCompare( itemA.alter,itemB.alter);
if( compare == 0){
compare = ObjectUtil.stringCompare( itemA.name,itemB.name, true);
}
return compare;
}
private function addPerson():void{
this.persons.addItem({name:this.nameInput.text,alter:Number(this.alterInput.text)});
}
]]>
</mx:Script>
<mx:DataGrid dataProvider="{this.persons}" left = "10" right = "10" id = "uebersicht" height = "100%" bottom = "10" top = "84">
<mx:columns>
<mx:DataGridColumn headerText = "Name" dataField = "name"/>
<mx:DataGridColumn id="test" headerText = "" dataField = "alter" width = "40" sortCompareFunction="compare1" sortable="true" sortDescending="true"/>
</mx:columns>
</mx:DataGrid>
<mx:HBox y="26" left="10" right="10">
<mx:Button label="Add Person" click="addPerson()"/>
<mx:Label text="NAME"/>
<mx:TextInput id="nameInput"/>
<mx:Label text="ALTER"/>
<mx:TextInput id="alterInput"/>
</mx:HBox>
</mx:WindowedApplication> |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Apr 2009
Beiträge: 135
|
Bin mir nicht sicher, ob wir das gleiche meinen. Ich geb mal ein Beispiel: Der User trägt einen neuen Benutzer A ein. Alter wäre 20. Dieser steht also an erster stelle. Dann trägt er einne Benutzer B ein. Alter ist 30. Benutzer B kommt an erste Stelle und A kommt an 2. Stelle. Dann legt er einen Benutzer C an. Alter ist 10 Jahre. Benutzer C kommt an 3. Stelle. B (30) --> A (20) --> C (10) Und das soll alles beim Anlegen neuer Benutzer passieren. Also OHNE, dass der User oben auf den Header klicken muss. Bei mir wird erst sortiert, wenn ich auf den DataGrid-Header klicke. Und das ist nicht gewünscht. danke |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Apr 2009
Beiträge: 135
|
So, mein Feedback: Hat super geklappt. Danke an alle!!!! hier mein Code: Code: var dataSortField:SortField = new SortField();
dataSortField.name = "alter";
dataSortField.numeric = true;
var numericDataSort:Sort = new Sort();
numericDataSort.fields = [dataSortField];
alleDaten.sort = numericDataSort;
alleDaten.refresh(); |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Datagrid soll richtig sortieren | deak | Flash CS3 Professional | 0 | 14-05-2009 12:43 |
| umlaute im datagrid sortieren | hds26846 | Komponenten und SmartClips | 1 | 19-02-2008 13:04 |
| datagrid + DB --- sortieren von text mit zahlen | VT3 | PHP und MySQL | 2 | 09-07-2006 12:52 |
| Datagrid: Inhalte richtig sortieren | supatascha | Komponenten und SmartClips | 1 | 12-09-2005 15:56 |
| Datum sortieren Datagrid | asauer | Flash MX | 1 | 01-04-2004 14:44 |