Locale

Change the locale of the datepicker, schedule and client side validation messages.

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Czech
Greek
Persian
Finnish
Danish
Hindi
Indonesian
Croatian
Japanese
Hungarian
Hebrew
Georgian
Central Kurdish
Khmer
Kyrgyz
Kazakh
Lithuanian
Latvian
Malay
Norwegian
Polish
Romanian
Russian
Slovak
Slovenian
Serbian
Serbian
Swedish
Thai
Turkish
Ukrainian
Vietnamese
Chinese
Chinese

Input Style

Themes

PrimeOne
Saga Saga
Vela Vela
Arya Arya
Bootstrap
bootstrap4-blue-light Bootstrap Blue
bootstrap4-purple-light Bootstrap Purple
bootstrap4-blue-dark Bootstrap Blue
bootstrap4-purple-dark Bootstrap Purple
Material Design
material-indigo-light Indigo
material-deeppurple-light' Deep Purple
material-indigo-dark Indigo
material-deeppurple-dark' Deep Purple
Material Design Compact
material-indigo-light Indigo
material-deeppurple-light' Deep Purple
material-indigo-dark Indigo
material-deeppurple-dark' Deep Purple

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Johnson T BriddickCanadaAmy Elsner PROPOSAL
Costa E MorascaIndiaAmy Elsner RENEWAL
Deepesh V DarakjyAustraliaBernardo Dominic NEW
Ivar M OstroskyAustraliaXuxue Feng NEGOTIATION
Sinclair G TollnerBrazilBernardo Dominic QUALIFIED
Misaki W BowleyJapanAmy Elsner PROPOSAL
Aika S MarrierRussiaAnna Fali UNQUALIFIED
Claire Q FollerFranceElwin Sharvill NEGOTIATION
Rodrigues H DilliardGermanyBernardo Dominic NEGOTIATION
Jeanfrancois B MaletIndiaAmy Elsner NEW
Alejandro R MorascaSpainXuxue Feng UNQUALIFIED
Leja Q KolmetzGermanyXuxue Feng RENEWAL
Octavia B GarufiJapanIvan Magalhaes NEW
Greenwood E VocelkaArgentinaBernardo Dominic QUALIFIED
Johnson Q BriddickArgentinaBernardo Dominic NEW
Rodrigues H SaylorsAustraliaAsiya Javayant NEGOTIATION
Cody C DilliardIndiaStephen Shaw QUALIFIED
Clifford K KolmetzFranceAmy Elsner NEGOTIATION
Isabel G OldroydAustraliaIvan Magalhaes UNQUALIFIED
Deepesh L PoquetteFranceElwin Sharvill QUALIFIED
Chavez Q FollerBrazilIoni Bowcher NEGOTIATION
Leja B KolmetzIndiaAnna Fali UNQUALIFIED
Aditya X WaycottSpainIoni Bowcher PROPOSAL
Deepesh Y NestleAustraliaAmy Elsner PROPOSAL
Isabel I GauchoBrazilIoni Bowcher QUALIFIED
Smith I PaprockiUnited KingdomXuxue Feng UNQUALIFIED
Alejandro P SlusarskiIndiaBernardo Dominic NEGOTIATION
Darci E RutaArgentinaOnyama Limba NEW
Greenwood L WhobreyCanadaAsiya Javayant PROPOSAL
Jeanfrancois M NickaArgentinaElwin Sharvill UNQUALIFIED
Ricardo N SergiJapanBernardo Dominic NEW
Darci B KuskoGermanyStephen Shaw PROPOSAL
Nicolas C RutaArgentinaOnyama Limba PROPOSAL
Emily D StensethFranceIvan Magalhaes UNQUALIFIED
Aditya E AmigonArgentinaStephen Shaw RENEWAL
Silvio E OldroydAustraliaAsiya Javayant QUALIFIED
Jones T BowleySpainIvan Magalhaes PROPOSAL
Maria F BologniaCanadaXuxue Feng QUALIFIED
Francesco M GarufiFranceIoni Bowcher NEGOTIATION
Julie X InouyeIndiaAsiya Javayant RENEWAL
Costa Q CampainItalyAnna Fali QUALIFIED
Francesco M PaprockiGermanyStephen Shaw PROPOSAL
Mujtaba C VocelkaCanadaIvan Magalhaes QUALIFIED
Cody D NickaFranceAsiya Javayant UNQUALIFIED
Salvatore R MaletJapanAmy Elsner RENEWAL
Octavia K GillianRussiaAmy Elsner UNQUALIFIED
Nicolas C InouyeUnited KingdomBernardo Dominic NEW
Antonio B NestleItalyElwin Sharvill QUALIFIED
Claire Q PoquetteSpainAmy Elsner NEGOTIATION
Francesco X GauchoCanadaAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Clifford N KolmetzBrazilAsiya Javayant PROPOSAL
Murillo Z FigeroaCanadaXuxue Feng QUALIFIED
Izzy D WieserJapanBernardo Dominic PROPOSAL
Sinclair B KolmetzBrazilIoni Bowcher NEW
Jones H MorascaJapanIvan Magalhaes NEGOTIATION
Juan K WieserGermanyStephen Shaw PROPOSAL
Johnson V ChuiSpainAmy Elsner RENEWAL
Maisha C MaletArgentinaElwin Sharvill PROPOSAL
Leja O GarufiArgentinaIvan Magalhaes RENEWAL
Claire S KuskoArgentinaAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily C BologniaRussia2026-06-05Dorl, James J Esq NEGOTIATION44Xuxue Feng
1001Tony S GillianRussia2026-06-11Chemel, James L Cpa NEGOTIATION58Amy Elsner
1002Salvatore G StensethRussia2026-06-30Chemel, James L Cpa QUALIFIED8Bernardo Dominic
1003Munro O IturbideRussia2026-06-19Chapman, Ross E Esq NEGOTIATION5Bernardo Dominic
1004Claire X KolmetzBrazil2026-06-14Feltz Printing Service QUALIFIED74Elwin Sharvill
1005Smith C CampainFrance2026-06-06Printing Dimensions UNQUALIFIED3Asiya Javayant
1006Mujtaba J VenereRussia2026-06-10Chanay, Jeffrey A Esq NEGOTIATION44Asiya Javayant
1007Rodrigues C WhobreyCanada2026-06-24Printing Dimensions PROPOSAL71Bernardo Dominic
1008Wickens O SergiBrazil2026-06-24Benton, John B Jr NEGOTIATION18Bernardo Dominic
1009Sinclair U WhobreyCanada2026-06-18Morlong Associates UNQUALIFIED42Xuxue Feng
1010Juan O DoeArgentina2026-06-05Chemel, James L Cpa PROPOSAL35Ivan Magalhaes
1011Aditya P BowleyIndia2026-06-21Morlong Associates RENEWAL98Elwin Sharvill
1012Leon U RimRussia2026-06-04Truhlar And Truhlar Attys UNQUALIFIED95Ivan Magalhaes
1013Darci D FerenczSpain2026-06-12Benton, John B Jr NEGOTIATION35Ioni Bowcher
1014Maisha I ButtBrazil2026-06-10Commercial Press NEW22Ioni Bowcher
1015Claire F OldroydAustralia2026-06-25Chanay, Jeffrey A Esq NEGOTIATION68Elwin Sharvill
1016Murillo S CaudyRussia2026-07-02Feiner Bros RENEWAL22Bernardo Dominic
1017Silvio Q BologniaUnited Kingdom2026-06-04Chemel, James L Cpa NEW44Ioni Bowcher
1018Morrow S ButtGermany2026-06-28Truhlar And Truhlar Attys RENEWAL98Stephen Shaw
1019Morrow T CampainItaly2026-06-14Chanay, Jeffrey A Esq NEW60Onyama Limba
1020Leja B SaylorsArgentina2026-06-23Feiner Bros PROPOSAL74Elwin Sharvill
1021Claire T GlickItaly2026-06-15Morlong Associates QUALIFIED31Ioni Bowcher
1022Maria G FigeroaArgentina2026-06-05Dorl, James J Esq UNQUALIFIED9Anna Fali
1023Maisha B GlickGermany2026-06-29Printing Dimensions QUALIFIED60Ivan Magalhaes
1024Maria J VenereCanada2026-06-06Rousseaux, Michael Esq RENEWAL49Onyama Limba
1025Arvin S SlusarskiUnited Kingdom2026-06-15Rangoni Of Florence UNQUALIFIED10Elwin Sharvill
1026Kadeem Y OstroskyIndia2026-06-10Feltz Printing Service RENEWAL55Asiya Javayant
1027Morrow E GlickArgentina2026-06-24Commercial Press QUALIFIED8Asiya Javayant
1028Jennifer X RulapaughSpain2026-06-21Dorl, James J Esq RENEWAL12Onyama Limba
1029Emily N AlbaresBrazil2026-06-29Buckley Miller Wright QUALIFIED83Stephen Shaw
1030Rodrigues G GauchoSpain2026-06-04Rangoni Of Florence UNQUALIFIED74Ivan Magalhaes
1031Julie B RoysterArgentina2026-06-21Truhlar And Truhlar Attys NEGOTIATION43Anna Fali
1032Jones P WaycottCanada2026-07-03Rousseaux, Michael Esq QUALIFIED27Elwin Sharvill
1033Jennifer Y BologniaAustralia2026-06-30Dorl, James J Esq NEW65Ivan Magalhaes
1034Stacey Z ShinkoJapan2026-06-16Rangoni Of Florence UNQUALIFIED9Elwin Sharvill
1035Maria N CaldareraFrance2026-06-06Feiner Bros NEGOTIATION70Amy Elsner
1036Jennifer I TollnerUnited Kingdom2026-06-17Printing Dimensions QUALIFIED38Ivan Magalhaes
1037Faith B BologniaAustralia2026-06-11Rousseaux, Michael Esq QUALIFIED83Elwin Sharvill
1038Smith S CaudyJapan2026-06-27Morlong Associates RENEWAL90Xuxue Feng
1039James C VenereIndia2026-06-24Printing Dimensions UNQUALIFIED88Ioni Bowcher
1040Tony T WhobreyBrazil2026-06-21Benton, John B Jr NEGOTIATION0Stephen Shaw
1041Ashley I ButtCanada2026-06-14Chanay, Jeffrey A Esq UNQUALIFIED96Ioni Bowcher
1042Johnson L FigeroaBrazil2026-06-29King, Christopher A Esq NEGOTIATION38Ivan Magalhaes
1043Isabel G BologniaAustralia2026-06-11Dorl, James J Esq NEW31Anna Fali
1044Clifford X GillianSpain2026-06-29King, Christopher A Esq QUALIFIED58Ivan Magalhaes
1045Misaki Q CampainIndia2026-06-30Rousseaux, Michael Esq UNQUALIFIED26Stephen Shaw
1046Leja M StockhamSpain2026-07-03Feiner Bros QUALIFIED96Asiya Javayant
1047Claire A OstroskyUnited Kingdom2026-06-14Chanay, Jeffrey A Esq NEGOTIATION46Xuxue Feng
1048Alejandro B NestleArgentina2026-06-19Morlong Associates NEW62Elwin Sharvill
1049Rodrigues C DoeRussia2026-06-22Rousseaux, Michael Esq RENEWAL93Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Ashley I DarakjyAustraliaOnyama Limba RENEWAL
Cody K VenereIndiaAnna Fali RENEWAL
Johnson J PaprockiRussiaIoni Bowcher RENEWAL
Emily Q ChuiItalyOnyama Limba NEGOTIATION
Ashley G SergiFranceElwin Sharvill RENEWAL
Aruna N OstroskyBrazilXuxue Feng RENEWAL
Ricardo N OldroydJapanIvan Magalhaes PROPOSAL
Antonio G RimIndiaAnna Fali RENEWAL
Jefferson P DoeArgentinaBernardo Dominic RENEWAL
Emily C OldroydSpainElwin Sharvill QUALIFIED
Chavez R PerinArgentinaIvan Magalhaes PROPOSAL
Maria R FerenczGermanyAnna Fali QUALIFIED
Isabel T MaletRussiaIoni Bowcher NEGOTIATION
Aditya Q InouyeArgentinaAsiya Javayant RENEWAL
Ashley U BowleyUnited KingdomOnyama Limba UNQUALIFIED
Ricardo N SergiGermanyStephen Shaw PROPOSAL
Jennifer U GillianFranceElwin Sharvill UNQUALIFIED
Maisha T ButtIndiaIvan Magalhaes QUALIFIED
Cody A MaletGermanyStephen Shaw NEW
Aika B GlickGermanyBernardo Dominic QUALIFIED
Emily Z TollnerJapanXuxue Feng PROPOSAL
Jennifer Q DilliardItalyAsiya Javayant RENEWAL
Smith U RulapaughAustraliaXuxue Feng PROPOSAL
Stacey P RoysterIndiaAmy Elsner QUALIFIED
Nicolas G WieserUnited KingdomIvan Magalhaes UNQUALIFIED
Ricardo F VenereItalyStephen Shaw PROPOSAL
Adams L AlbaresUnited KingdomIvan Magalhaes PROPOSAL
Maisha T RimGermanyIoni Bowcher QUALIFIED
Mujtaba D MaletIndiaIvan Magalhaes QUALIFIED
Nicolas W OstroskyItalyIvan Magalhaes NEGOTIATION
Francesco Q MorascaJapanIvan Magalhaes PROPOSAL
Claire B MarrierItalyAnna Fali QUALIFIED
Maisha Z CaudyItalyAmy Elsner PROPOSAL
Darci V WieserAustraliaIvan Magalhaes PROPOSAL
Faith I KuskoJapanIoni Bowcher RENEWAL
Silvio G BriddickFranceOnyama Limba RENEWAL
Ricardo P CampainIndiaElwin Sharvill NEW
Silvio S FlosiSpainAnna Fali NEW
Adams U SaylorsJapanXuxue Feng NEGOTIATION
Darci P WieserArgentinaBernardo Dominic UNQUALIFIED
Aruna B OldroydIndiaIvan Magalhaes UNQUALIFIED
Ricardo D WaycottBrazilBernardo Dominic RENEWAL
Aika K ShinkoFranceAsiya Javayant NEGOTIATION
Ashley E RulapaughItalyAnna Fali NEGOTIATION
Maria V ShinkoAustraliaIvan Magalhaes RENEWAL
Aditya S PoquetteRussiaElwin Sharvill NEGOTIATION
Murillo T KolmetzSpainOnyama Limba NEGOTIATION
Wickens Y ShinkoBrazilIvan Magalhaes PROPOSAL
Ricardo H RoysterItalyAsiya Javayant NEW
Tony N VocelkaUnited KingdomIvan Magalhaes RENEWAL
Frozen Columns
Name
Alejandro C Doe
Alejandro D Rim
Mujtaba Y Rulapaugh
Maisha B Briddick
Smith Q Chui
Costa Y Poquette
Mayumi H Stenseth
Emily A Stockham
Ashley O Stockham
Stacey L Garufi
Maria L Flosi
Aika A Marrier
Aruna Q Chui
Greenwood P Paprocki
Francesco I Campain
Costa V Perin
Nicolas E Vocelka
Kaitlin Q Kusko
Wickens W Foller
Claire K Stockham
Tony F Gaucho
Cody N Albares
Murillo K Gillian
Francesco W Nestle
Emily F Flosi
Arvin O Kusko
Tony M Ostrosky
Francesco G Morasca
Deepesh Q Ferencz
Darci N Saylors
Ricardo B Slusarski
Jefferson K Stockham
Claire T Kusko
Tony L Marrier
Ricardo P Tollner
Chavez H Tollner
Francesco T Ferencz
Tony W Albares
Ashley V Campain
Costa X Gillian
Isabel F Paprocki
Maria N Kusko
Greenwood F Marrier
Chavez Q Wieser
Maria Q Royster
Alejandro T Garufi
Morrow Q Kolmetz
Aditya A Butt
Chavez A Saylors
Rodrigues Y Rulapaugh
IdCountryDate
1000India2026-06-26
1001India2026-06-12
1002France2026-06-24
1003France2026-06-26
1004Canada2026-06-10
1005Argentina2026-06-21
1006Italy2026-06-10
1007India2026-06-08
1008India2026-06-27
1009Spain2026-07-02
1010United Kingdom2026-06-27
1011United Kingdom2026-06-05
1012Germany2026-06-16
1013United Kingdom2026-06-07
1014France2026-06-11
1015Brazil2026-06-17
1016Japan2026-06-20
1017Italy2026-06-10
1018Australia2026-06-05
1019Italy2026-06-10
1020Australia2026-06-25
1021Japan2026-06-18
1022United Kingdom2026-07-03
1023India2026-06-05
1024Canada2026-06-06
1025Germany2026-06-26
1026Japan2026-06-06
1027Canada2026-06-08
1028Brazil2026-06-08
1029Brazil2026-06-22
1030Argentina2026-06-15
1031Canada2026-06-14
1032United Kingdom2026-06-14
1033Australia2026-06-12
1034Italy2026-06-24
1035United Kingdom2026-07-01
1036Brazil2026-06-06
1037United Kingdom2026-06-23
1038Argentina2026-06-04
1039Argentina2026-06-28
1040Japan2026-07-01
1041Russia2026-06-28
1042Australia2026-06-21
1043Brazil2026-06-07
1044Spain2026-06-18
1045Germany2026-06-12
1046Japan2026-06-26
1047Japan2026-06-18
1048Russia2026-06-30
1049France2026-06-21

On-Demand Data

NameIdCountryDate
Antonio M Caudy1000Italy2026-06-29
Greenwood L Gaucho1001France2026-06-12
Ivar O Stockham1002Italy2026-06-04
Salvatore T Morasca1003France2026-06-07
Misaki O Gaucho1004United Kingdom2026-07-02
Ashley S Royster1005Spain2026-07-01
Rodrigues G Campain1006United Kingdom2026-06-21
Jennifer J Saylors1007Brazil2026-07-01
Jones J Foller1008Italy2026-06-20
Leja Q Whobrey1009Spain2026-06-09
Alejandro C Campain1010India2026-06-26
Rodrigues W Albares1011Spain2026-06-20
Aditya N Slusarski1012Russia2026-06-18
Kaitlin U Dilliard1013Spain2026-06-18
Silvio H Inouye1014Brazil2026-06-10
Salvatore F Slusarski1015Italy2026-07-01
Jeanfrancois H Marrier1016Australia2026-06-10
Ashley N Sergi1017United Kingdom2026-06-21
Mujtaba V Whobrey1018Japan2026-06-30
Alejandro V Butt1019Canada2026-06-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore N DilliardRussiaIoni Bowcher RENEWAL
Murillo M GillianArgentinaIoni Bowcher QUALIFIED
Silvio X NestleCanadaBernardo Dominic NEW
Nicolas T VocelkaFranceIvan Magalhaes PROPOSAL
Aruna Z CampainFranceAnna Fali RENEWAL
James X DilliardIndiaAsiya Javayant UNQUALIFIED
Alejandro W GillianGermanyOnyama Limba NEGOTIATION
Isabel D AmigonBrazilBernardo Dominic NEGOTIATION
Wickens V DarakjyCanadaAsiya Javayant QUALIFIED
Izzy E AmigonItalyStephen Shaw QUALIFIED
Octavia F MaletIndiaOnyama Limba NEGOTIATION
Silvio V BowleySpainIvan Magalhaes QUALIFIED
Wickens C BriddickAustraliaOnyama Limba QUALIFIED
Jennifer M PoquetteCanadaStephen Shaw QUALIFIED
Jeanfrancois R GlickAustraliaXuxue Feng NEGOTIATION
Kaitlin K WaycottBrazilIvan Magalhaes NEGOTIATION
Greenwood M GauchoSpainAmy Elsner QUALIFIED
Chavez D SergiFranceStephen Shaw QUALIFIED
Juan C FerenczSpainStephen Shaw NEGOTIATION
Mayumi O PaprockiUnited KingdomAmy Elsner UNQUALIFIED
David Q CaudySpainXuxue Feng UNQUALIFIED
Jeanfrancois P CaldareraBrazilXuxue Feng UNQUALIFIED
Stacey T DoeUnited KingdomOnyama Limba NEGOTIATION
Claire J OstroskyFranceAsiya Javayant NEGOTIATION
Wickens L WhobreyJapanStephen Shaw UNQUALIFIED
Munro C MaletItalyStephen Shaw NEW
Arvin C AlbaresSpainIvan Magalhaes QUALIFIED
Nicolas F BologniaUnited KingdomAmy Elsner UNQUALIFIED
Darci R GillianUnited KingdomStephen Shaw NEW
Misaki S PaprockiBrazilAmy Elsner UNQUALIFIED
Kadeem F CaudyGermanyAmy Elsner UNQUALIFIED
Nicolas W BowleyCanadaIvan Magalhaes RENEWAL
Mayumi E FollerIndiaAmy Elsner QUALIFIED
Jennifer G GauchoBrazilBernardo Dominic RENEWAL
Stacey Z MorascaFranceXuxue Feng QUALIFIED
Stacey E FigeroaJapanAnna Fali NEGOTIATION
Kadeem F StensethRussiaAsiya Javayant NEGOTIATION
Ivar H ChuiJapanIvan Magalhaes NEGOTIATION
Kaitlin S KuskoSpainIoni Bowcher NEGOTIATION
Greenwood K BologniaCanadaIvan Magalhaes QUALIFIED

<style>
    .ui-datatable-frozenlayout-left {
        width: 20%;
    }

    .ui-datatable-frozenlayout-right {
        width: 80%;
    }
</style>


<h:form>
    <div class="card">
        <h5 style="margin-top:0">Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers1}" scrollable="true" scrollHeight="250">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.name().toLowerCase()}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers2}" scrollable="true" scrollWidth="600">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.name().toLowerCase()}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal and Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers3}" scrollable="true" scrollWidth="50%" scrollHeight="250">
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
            <p:column headerText="Company" footerText="Company">
                <h:outputText value="#{customer.company}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.name().toLowerCase()}">#{customer.status}</span>
            </p:column>
            <p:column headerText="Activity" footerText="Activity">
                <h:outputText value="#{customer.activity}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers4}" scrollable="true" scrollHeight="250"
                     frozenRows="2">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.name().toLowerCase()}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Columns</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers5}" scrollable="true" scrollHeight="250"
                     scrollWidth="300" frozenColumns="1">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h3>On-Demand Data</h3>
        <p:dataTable var="customer" value="#{dtScrollView.customers6}" scrollRows="20" scrollable="true" liveScroll="true" scrollHeight="150">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Virtual Scrolling - 20000 Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.lazyModel}" scrollRows="20" scrollable="true"
                     virtualScroll="true" scrollHeight="200" rows="40" style="margin-bottom:0">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.name().toLowerCase()}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

</h:form>