Siirry pääsisältöön

Sorting

Avaa ChatGPT:ssä

Lajittelu antaa käyttäjille mahdollisuuden järjestää tietoja sarakkeissa järjestyksen mukaan, mikä tekee tiedoista helpommin luettavia ja analysoitavia. Tämä on hyödyllistä, kun käyttäjät tarvitsevat nopeasti löytää korkeimmat tai matalimmat arvot tietyssä sarakkeessa.

Tietojen hallinta ja kysely

Tietoa siitä, kuinka käyttää Repository-mallia hallitaksesi ja kysyäksesi kokoelmia, katso Repository-artikkelit.

Näytä koodi

Oletuksena sarake ei ole lajittelukelpoinen, ellei se ole erikseen sallittu. Salliaksesi lajittelun tietyssä sarakkeessa, käytä setSortable(true) -menetelmää:

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

Monilajittelu

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

Ennen webforj 25.00:aa taulukot tukivat oletuksena monisarakkeista lajittelua. Versiosta 25.00 alkaen tämä käyttäytyminen muuttui—kehittäjien täytyy nyt erikseen sallia monisarakkeinen lajittelu.

Jos monilajittelu on tarpeen, setMultiSorting(true) on sovellettava taulukkoon. Tämä sallii käyttäjien lajitella useita sarakkeita peräkkäin:

table.setMultiSorting(true);

Monilajittelun ollessa käytössä, useiden sarakeotsikoiden klikkaaminen lajittelee ne peräkkäin. Lajittelun prioriteetti näkyy visuaalisesti taulukkokäyttöliittymässä.

Näytä koodi

Voit myös määrittää lajittelun prioriteetin ohjelmallisesti palvelinpuolen lajittelu varten. Käytä setSortOrder() sarakkeilla, joita haluat lajitella, prioriteettiluettelon mukaisesti:

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

Ellei setSortOrder() -menetelmää käytetä, taulukko käyttää oletuksena lajittelua sarakkeiden julkaisujärjestyksen mukaan.

Näytä koodi

Lajittelusuunta

Sarake voidaan lajitella kolmessa eri suunnassa:

  • SortDirection.ASC: Lajittelee sarakkeen nousevassa järjestyksessä.
  • SortDirection.DESC: Lajittelee sarakkeen laskevassa järjestyksessä.
  • SortDirection.NONE: Sarakkeeseen ei ole sovellettu lajittelua.

Kun sarakkeessa on lajittelu käytössä, näet sarakeotsikon yläpuolella joukon pystysuoria nuoli-indikaattoreita. Nämä nuolet mahdollistavat käyttäjän vaihtaa eri lajittelusuuntien välillä.

Kun nouseva järjestys on valittuna, näkyy ^, kun taas laskevassa järjestyksessä näkyy v.

Asiakas vs. palvelinpuolen lajittelu

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

Asiakaslajittelu

Asiakaslajittelu tarkoittaa, että tiedot järjestetään ja näytetään suoraan asiakasohjelman käyttöliittymässä. Se on lajittelu, johon käyttäjät vuorovaikuttavat, kun he klikata sarakeotsikoita, vaikuttaen tiedon visuaaliseen esitykseen näytöllä.

Kehittäjällä ei ole suoraa vaikutusvaltaa asiakaspuolen lajitteluun, vaan se määräytyy Java:ssa annettujen sarakkeiden tyyppien mukaan. Seuraavia tyyppejä tuetaan tällä hetkellä:

  • TEKSTI
  • NUMERO
  • BOOL
  • PÄIVÄMÄÄRÄ
  • PÄIVÄMÄÄRÄ-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 järjestämistä palvelimella ennen kuin ne siirretään asiakkaalle. Tämä lähestymistapa on erityisen hyödyllinen, kun käsitellään suuria tietokokonaisuuksia, joita olisi mahdotonta siirtää kokonaan asiakkaalle.

Kehittäjillä on enemmän hallintaa palvelinlajittelun logiikasta. Tämä mahdollistaa monimutkaisten lajittelualgoritmien ja optimointien toteuttamisen, minkä vuoksi se on sopiva laajoja tietokokoelmia käsitellessä. Tämä varmistaa, että asiakas saa ennakko-lajitellut tiedot, mikä vähentää tarvetta laajalle asiakaspuolen käsittelylle.

tiedot

Palvelinlajittelu on suorituskykyyn keskittyvä strategia käsiteltäessä tietokokonaisuuksia, jotka ylittävät tehokkaan asiakaspuolen käsittelyn kyvyt, ja on oletusmenetelmä Table:ssa.

Sarakeominaisuuden nimi

Oletuksena Table käyttää sarakkeen ID:tä ominaisuusnimenä, kun se rakentaa lajittelukriteereitä taustajärjestelmän tallennuspaikalle. Kun sarakkeen näyttö-ID ei vastaa taustalla olevaa tietovarantoa, tai kun sarake näyttää laskentatavan arvon, käytä setPropertyName() kertoaksesi nimenomaisesti Table:lle, minkä ominaisuuden mukaan lajittelua haluat.

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

Ominaisuuden nimi välitetään OrderCriteria:lle, kun lajittelutapahtuma laukaistaan, jolloin taustajärjestelmien kuten Spring Data JPA tai REST-adapterit voivat rakentaa oikean ORDER BY -lauseen.

varoitus

Ilman setPropertyName() -menetelmää Table palauttaa takaisin sarakkeen ID:lle. Jos tämä ei vastaa voimassa olevaa taustadatan ominaisuutta, lajittelu epäonnistuu hiljaa tai palauttaa väärin järjestettyjä tietoja.

Myös sisäkkäiset ominaisuudet saavat tukea piste-notaatiossa:

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

Vertailijat

Column-komponentti mahdollistaa kehittäjien käyttää Java Comparators-työkaluja dynaamiseen ja mukautettuun lajitteluun. Comparator on mekanismi, joka käytetään kahden saman luokan objektin järjestämiseen, vaikka luokka olisi käyttäjän määrittämä. Tämä toiminnallisuus tarjoaa kehittäjille joustavuutta räätälöidä, miten dataa lajitellaan, tarjoten suuremman hallinnan oletuslajittelukäyttäytymiseen verrattuna luonnolliseen järjestykseen.

Voit hyödyntää Comparator-lajittelua sarakkeessa käyttämällä setComparator() -menetelmää. Tämä menetelmä sallii sinun määrittää mukautetun Comparator-toiminnon, joka määrää lajittelulogiikan.

Näytä koodi

Edellä olevassa esimerkissä määritellään mukautettu vertailutoiminto, joka ottaa kaksi elementtiä (a ja b), ja määrittelee lajittelujärjestyksen Number-attribuutin parsettujen kokonaisarvojen perusteella.

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

Oletuksena Table käyttää palvelinpuolen lajittelua, ja lajittelee ei-primitiviarvoja käyttämällä Objectin toString()-menetelmää, muuntamalla ne merkkijonoarvoiksi ja sitten lajitellen niitä.