Siirry pääsisältöön

Sorting

Avaa ChatGPT:ssä

Järjestäminen antaa käyttäjille mahdollisuuden laittaa tietoja sarakkeisiin järjestyksessä, mikä tekee tiedoista helpommin luettavia ja analysoitavia. Tämä on hyödyllistä, kun käyttäjät tarvitsevat nopeasti suurimmat tai pienimmät arvot tietyssä sarakkeessa.

Tietojen hallinta ja kysely

Tietoa siitä, miten käyttää Repository-mallia tietokokoelmien hallintaan ja kyselyyn, katso Repository-artikkeleita.

Näytä koodi

Oletusarvoisesti sarake ei ole lajiteltavissa, ellei se erikseen aktivoida. Voit sallia lajittelun tietyssä sarakkeessa käyttämällä setSortable(true)-metodia:

table.getColumn("Ikä").setSortable(true);

Monilajittelu

Monisarakkeen lajittelu on pois päältä oletuksena webforJ:ssä 25.00

Ennen webforj 25.00:ta taulukot tukivat monisarakkeen lajittelua oletuksena. Versiosta 25.00 alkaen tämä käyttäytyminen muuttui—kehittäjien on nyt erikseen aktivoitava monisarakkeen lajittelu.

Jos monilajittelua tarvitaan, setMultiSorting(true) on sovellettava taulukkoon. Tämä mahdollistaa käyttäjien lajittelemien useita sarakkeita peräkkäin:

table.setMultiSorting(true);

Kun monilajittelu on käytössä, useiden sarakeotsikoiden napsauttaminen lajittelee ne peräkkäin. Lajittelun prioriteetti näkyy visuaalisesti taulukon käyttöliittymässä.

Näytä koodi

Voit myös määrittää lajittelun prioriteetin ohjelmallisesti palvelinpuolen lajittelua varten. Käytä setSortOrder() niissä sarakkeissa, joita haluat lajitella, prioriteetti järjestyksessä:

// Palvelinpuolen lajittelujärjestys
nameColumn.setSortOrder(1);
ageColumn.setSortOrder(2);
Sarakkeen järjestys on tärkeä

Ellei setSortOrder()-metodia käytetä, taulukko lajittelee oletusarvoisesti sen mukaan, missä järjestyksessä sarakkeet on määritelty.

Näytä koodi

Lajittelusuunta

Kolme käytettävissä olevaa asetusta sarakkeen lajittelusuunnalle ovat:

  • SortDirection.ASC: Lajittelee sarakkeen nousevassa järjestyksessä.
  • SortDirection.DESC: Lajittelee sarakkeen laskevassa järjestyksessä.
  • SortDirection.NONE: Ei lajittelua sarakkeelle.

Kun sarakkeella on lajittelu aktivoituna, näet sarakkeen yläosassa joukon pystysuoria nuoli-indikaattoreita. Nämä nuoleet antavat käyttäjälle mahdollisuuden vaihtaa eri lajittelusuuntien välillä.

Kun nouseva järjestys on valittu, näytetään ^, kun taas laskevassa järjestyksessä näytetään v.

Asiakas vs. palvelinpuolen lajittelu

Tietojen lajittelu voidaan laajasti jakaa kahteen päämenetelmään: Asiakaslajittelu ja Palvelinlajittelu.

Asiakaslajittelu

Asiakaslajittelu tarkoittaa tietojen järjestämistä ja näyttämistä suoraan asiakasohjelman käyttöliittymässä. Tämä on lajittelu, johon käyttäjät tekevät vuorovaikutusta napsauttamalla sarakeotsikoita, ja se vaikuttaa tietojen visuaaliseen esitykseen näytöllä.

Kehittäjällä ei ole suoraa hallintaa asiakaspuolen lajittelun osalta, vaan se määräytyy Javaan annettujen saraketyyppien mukaan. Tällä hetkellä tuetut tyypit ovat:

  • TEKSTI
  • NUMERO
  • BOOLEAN
  • PÄIVÄ
  • PÄIVÄYS-AIKA
  • AIKA
tiedot

Asiakaslajittelu ei toimi, kun vain osa tiedoista on saatavilla asiakkaalla.

Palvelinlajittelu

Toisin kuin asiakaspuolen lajittelu, palvelinlajittelu tarkoittaa tietojen järjestämistä ja organisoimista palvelimella ennen niiden lähettämistä asiakkaalle. Tämä lähestymistapa on erityisen hyödyllinen suurten tietojoukkojen käsittelyssä, jotka voivat olla epätodennäköisiä siirtää kokonaan asiakkaalle.

Kehittäjillä on enemmän hallintaa palvelinlaitteiden lajittelulogiikasta. Tämä mahdollistaa monimutkaisten lajittelualgoritmien ja optimointien toteuttamisen, mikä tekee siitä soveltuvan laajoille tietojoukoille. Tämä varmistaa, että asiakas saa esilajitellut tiedot, vähentäen laajaa asiakaspuolen käsittelyä.

tiedot

Palvelinlajittelu on suorituskykyyn perustuva strategia, joka liittyy tietojoukkoihin, jotka ylittävät tehokkaan asiakaspuolen käsittelyn kapasiteetit, ja on oletusmenetelmä, jota Table käyttää.

Sarakkeen ominaisuuden nimi

Oletusarvoisesti Table käyttää sarakkeen ID:tä ominaisuuden nimenä, kun se rakentaa lajittelukriteereitä taustajärjestelmälle. Kun sarakkeen näyttö-ID ei vastaa taustatietojen ominaisuutta tai kun sarake näyttää laskettua arvoa, käytä setPropertyName()-metodia kertoaksesi Table:lle, minkä ominaisuuden mukaan lajittaa.

// Sarakkeen ID on "Koko Nimi", mutta taustatietojen ominaisuus on "fullName"
table.addColumn("Koko Nimi", Person::getFullName)
.setSortable(true)
.setPropertyName("fullName");

Ominaisuusnimi välitetään OrderCriteria-laitteeseen, kun lajittelutapahtuma aktivoituu, mikä mahdollistaa taustajärjestelmien, kuten Spring Data JPA:n tai REST-sovittimien, rakentaa oikean ORDER BY-lauseen.

varoitus

Ilman setPropertyName():a Table palautuu sarakkeen ID:hen. Jos tämä ei vastaa voimassa olevaa taustatietojen ominaisuutta, lajittelu epäonnistuu hiljaa tai palauttaa väärin järjestettyjä tietoja.

Sisäkkäiset ominaisuuspolut ovat myös tuettuja piste-merkinnällä:

table.addColumn("Kaupunki", Person::getCity)
.setSortable(true)
.setPropertyName("address.city");

Vertailijat

Column-komponentti mahdollistaa kehittäjien käyttää Java Comparators-toimintoa dynaamiseen ja mukautettuun lajitteluun. Comparator on mekanismi, jota käytetään kahden saman luokan objektin järjestämiseen, vaikka se luokka olisi käyttäjän määrittelemä. Tämä toiminnallisuus antaa kehittäjille joustavuutta mukauttaa, miten tiedot lajitellaan, ja antaa enemmän hallintaa oletusarvoisen lajittelukäyttäytymisen osalta luonnollisen järjestyksen perusteella.

Hyödynnä Comparator-lajittelua Column-komponentissa voit käyttää setComparator()-metodia. Tämä metodi mahdollistaa määrittää mukautetun Comparator-funktion, joka määrää lajittelulogiikan.

Näytä koodi

Edellä olevassa esimerkissä määritellään mukautettu vertailufunktio, joka ottaa kaksi elementtiä (a ja b) ja määrittää lajittelujärjestyksen Number-attribuutin jäsennellyistä kokonaisarvoista.

Vertailijoiden käyttö sarakelajittelussa on erityisen hyödyllistä, kun käsitellään ei-numeerisia arvoja. Ne ovat myös hyödyllisiä monimutkaisten lajittelualgoritmien toteuttamisessa.

tiedot

Oletusarvoisesti Table käyttää palvelinpuolen lajittelua ja lajittelee ei-alkuperäiset arvot käyttämällä toString()-metodia Object-luokassa, muuttaen ne merkkijonoarvoiksi ja lajittelemalla ne sitten.