Avatar billede andersthingholm Nybegynder
07. april 2005 - 09:14 Der er 9 kommentarer og
1 løsning

Datagrid og numerisk sortering

Hej,

Hvordan sorterer jeg en kolonne i et datagrid numerisk og ikke som var det en streng?

VH

Anders
Avatar billede barklund Nybegynder
07. april 2005 - 09:42 #1
Nu er jeg ikke den skarpe til datagrid, hvordan sorterer du den nu?
Avatar billede andersthingholm Nybegynder
07. april 2005 - 09:43 #2
Den sorterer som var det en streng
Avatar billede barklund Nybegynder
07. april 2005 - 09:45 #3
Og hvordan gør du det? (script, please) ;)
Avatar billede andersthingholm Nybegynder
07. april 2005 - 09:48 #4
Ahhh, det er bare noget den gør som default. Ikke noget script jeg har lavet. Men her er scriptet som populerer den:

    grid_dg.removeAllColumns();
    grid_dg.removeAll();
    // Init datagrid
    grid_dg.addColumnAt(0, "num");
    grid_dg.addColumnAt(1, "Licensnummer");
    grid_dg.addColumnAt(2, "Navn");
    grid_dg.addColumnAt(3, "Point");
    grid_dg.addColumnAt(4, "Placering");
    grid_dg.getColumnAt(0).width = 40;
    grid_dg.getColumnAt(1).width = 110;
    grid_dg.getColumnAt(2).width = 300;
    grid_dg.getColumnAt(3).width = 50;
    grid_dg.getColumnAt(4).width = 100;
    grid_dg.getColumnAt(0).editable = false;
    grid_dg.getColumnAt(2).editable = false;
    grid_dg.getColumnAt(4).editable = false;
    grid_dg.getColumnAt(0).headerText = "#";
    // Load data
    for (i=0; i<24; i++) {
        grid_dg.addItem({num:i+1, Licensnummer:resultXML.firstChild.childNodes[i].attributes.licenseID, Navn:resultXML.firstChild.childNodes[i].attributes.name, Point:resultXML.firstChild.childNodes[i].attributes.point});
    }
    // Calculate placement
    placementArray = new Array();
    for (i=0; i<grid_dg.length; i++) {
        if (Number(grid_dg.getItemAt(i).Point)) {
            tempNum = Number(grid_dg.getItemAt(i).num);
            tempPoint = Number(grid_dg.getItemAt(i).Point);
            placementArray.push({num:tempNum, point:tempPoint});
        }
    }
    placementArray.sortOn("point", Array.DESCENDING | Array.NUMERIC);
    for (i=0; i<placementArray.length; i++) {
        tempNum = placementArray[i].num-1;
        grid_dg.getItemAt(tempNum).Placering = i+1;
    }
Avatar billede barklund Nybegynder
07. april 2005 - 10:42 #5
Kan du ikke bare sortere dine records inden du populerer listen? Ville det ikke være nemmest?
Avatar billede andersthingholm Nybegynder
07. april 2005 - 10:46 #6
Nej ikke helt. Problemet opstår når der klikkes på en header, så sorterer den efter denne kolonne. Prøv evt. at se linksne i spørgsmålet "Datagrid og fokus".
Avatar billede barklund Nybegynder
07. april 2005 - 10:52 #7
Kig i hjælpen under:

DataGridColumn.sortOnHeaderRelease

Med eksemplet:

myDataGrid.getColumnAt(index).sortOnHeaderRelease

Description
Property; a Boolean value that indicates whether the column is sorted automatically (true) or not (false) when a user clicks a header. This property can be set to true only if DataGridColumn.sortable is set to true. If DataGridColumn.sortOnHeaderRelease is set to false, you can catch the headerRelease event and perform your own sort.

The default value is true.

Den kan du nok bruge - men det bliver lidt spændende at rode i :)

--
Morten Barklund
Avatar billede andersthingholm Nybegynder
07. april 2005 - 11:42 #8
Takker - smider du et svar?
Avatar billede barklund Nybegynder
07. april 2005 - 11:48 #9
Helt i orden.

Og som sagt, jeg har aldrig brugt datagrid, jeg åbnede bare flash, kiggede i hjælpen under Components Dictionary, fandt DataGrid og læste lidt dernedaf :)

--
Morten Barklund
Avatar billede barklund Nybegynder
07. april 2005 - 12:05 #10
Tark for points ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester