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
Jones X SaylorsCanadaStephen Shaw UNQUALIFIED
Francesco B FerenczGermanyOnyama Limba NEW
Tony K AmigonSpainXuxue Feng QUALIFIED
Costa H InouyeFranceAmy Elsner NEGOTIATION
Antonio R PerinFranceIvan Magalhaes RENEWAL
Faith O GillianJapanIoni Bowcher NEW
Johnson A CaldareraCanadaXuxue Feng NEW
Maria X RimRussiaElwin Sharvill UNQUALIFIED
Aika Z DoeItalyStephen Shaw PROPOSAL
Kaitlin D RulapaughFranceElwin Sharvill NEW
Isabel U MacleadCanadaIoni Bowcher NEW
Misaki A BologniaBrazilStephen Shaw RENEWAL
Maisha X MaletGermanyElwin Sharvill NEGOTIATION
Darci Y NestleAustraliaAmy Elsner PROPOSAL
Jeanfrancois D WieserItalyOnyama Limba NEGOTIATION
Isabel B PoquetteAustraliaAnna Fali PROPOSAL
Mayumi S RoysterFranceIvan Magalhaes QUALIFIED
Julie N SergiSpainXuxue Feng RENEWAL
Aruna B DilliardArgentinaAnna Fali NEGOTIATION
Clifford M InouyeSpainIoni Bowcher NEGOTIATION
Maria I BriddickCanadaOnyama Limba QUALIFIED
Kadeem G BologniaBrazilAsiya Javayant NEW
James G SaylorsCanadaAnna Fali UNQUALIFIED
Wickens U RulapaughItalyElwin Sharvill NEW
Costa B MorascaItalyIoni Bowcher NEW
Jefferson B AmigonGermanyAmy Elsner QUALIFIED
Silvio U RutaIndiaElwin Sharvill UNQUALIFIED
Salvatore J KuskoItalyAnna Fali NEW
Aditya A MacleadRussiaAnna Fali NEW
Ashley L MacleadUnited KingdomBernardo Dominic QUALIFIED
Cody N WaycottGermanyElwin Sharvill NEW
Greenwood V PaprockiItalyAmy Elsner NEGOTIATION
Alejandro T InouyeCanadaOnyama Limba QUALIFIED
Tony K VocelkaFranceIvan Magalhaes QUALIFIED
Chavez E AmigonAustraliaAnna Fali NEGOTIATION
Jennifer S SaylorsArgentinaXuxue Feng UNQUALIFIED
Alejandro R BowleySpainBernardo Dominic NEW
Wickens R InouyeJapanIoni Bowcher RENEWAL
David U ShinkoBrazilAsiya Javayant RENEWAL
Clifford S StockhamSpainStephen Shaw QUALIFIED
Alejandro R AmigonUnited KingdomAnna Fali QUALIFIED
Leon O InouyeRussiaXuxue Feng NEW
Mayumi H BowleyGermanyAnna Fali UNQUALIFIED
Jennifer A ChuiBrazilElwin Sharvill NEGOTIATION
Ricardo Q OstroskyRussiaIvan Magalhaes UNQUALIFIED
Clifford Q InouyeUnited KingdomOnyama Limba UNQUALIFIED
Wickens N PoquetteItalyStephen Shaw NEGOTIATION
Aditya E WhobreySpainOnyama Limba NEGOTIATION
Stacey R BriddickBrazilAnna Fali PROPOSAL
Silvio T KolmetzBrazilIoni Bowcher NEW
Horizontal
NameCountryRepresentativeStatus
Aruna R StensethArgentinaAnna Fali NEW
Octavia U FollerUnited KingdomOnyama Limba QUALIFIED
Smith E RimIndiaAsiya Javayant QUALIFIED
Clifford Z RutaRussiaBernardo Dominic PROPOSAL
Emily Y GauchoItalyAnna Fali PROPOSAL
Francesco H NickaJapanIvan Magalhaes RENEWAL
Munro S OstroskyAustraliaXuxue Feng UNQUALIFIED
Greenwood O MaletGermanyBernardo Dominic NEW
Julie P DarakjyBrazilBernardo Dominic PROPOSAL
Francesco H CaldareraIndiaAnna Fali PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Izzy B FigeroaJapan2026-07-01Dorl, James J Esq NEGOTIATION10Ivan Magalhaes
1001Johnson J ShinkoArgentina2026-07-04Chemel, James L Cpa RENEWAL50Stephen Shaw
1002Clifford L OldroydSpain2026-06-12Rangoni Of Florence RENEWAL4Anna Fali
1003Antonio X SchemmerAustralia2026-06-23Buckley Miller Wright QUALIFIED59Asiya Javayant
1004Jeanfrancois G MarrierArgentina2026-06-30Dorl, James J Esq QUALIFIED54Amy Elsner
1005Maisha A OldroydUnited Kingdom2026-06-24Morlong Associates NEGOTIATION46Stephen Shaw
1006Silvio H FlosiFrance2026-06-16Chapman, Ross E Esq QUALIFIED55Amy Elsner
1007Jennifer W RoysterFrance2026-06-16Rangoni Of Florence NEW92Ioni Bowcher
1008Chavez S StockhamArgentina2026-07-04Printing Dimensions NEW30Xuxue Feng
1009Antonio H GauchoJapan2026-06-20Feltz Printing Service RENEWAL70Anna Fali
1010Ivar G VenereIndia2026-06-10Feiner Bros RENEWAL92Ivan Magalhaes
1011Aditya P CaldareraAustralia2026-06-09Benton, John B Jr NEGOTIATION20Xuxue Feng
1012Wickens T MarrierJapan2026-06-05Benton, John B Jr UNQUALIFIED67Elwin Sharvill
1013Greenwood L OstroskyIndia2026-06-10Truhlar And Truhlar Attys RENEWAL93Elwin Sharvill
1014Murillo Z WieserCanada2026-06-30Chanay, Jeffrey A Esq QUALIFIED82Ioni Bowcher
1015Aruna V MarrierCanada2026-06-29Truhlar And Truhlar Attys PROPOSAL44Onyama Limba
1016Smith A ButtBrazil2026-06-24Printing Dimensions QUALIFIED3Ivan Magalhaes
1017Rodrigues C ChuiSpain2026-06-16Benton, John B Jr QUALIFIED38Anna Fali
1018Jennifer A MacleadJapan2026-06-11Rangoni Of Florence UNQUALIFIED23Stephen Shaw
1019Aditya R SlusarskiGermany2026-06-23Truhlar And Truhlar Attys RENEWAL21Stephen Shaw
1020Leon G InouyeJapan2026-06-28Truhlar And Truhlar Attys NEW13Ivan Magalhaes
1021Julie F StockhamGermany2026-06-19Morlong Associates QUALIFIED87Ioni Bowcher
1022Octavia F PoquetteJapan2026-06-22Chanay, Jeffrey A Esq PROPOSAL45Asiya Javayant
1023Izzy R GauchoRussia2026-07-03Chanay, Jeffrey A Esq QUALIFIED71Anna Fali
1024Costa W WhobreyGermany2026-06-07Chemel, James L Cpa RENEWAL92Anna Fali
1025Francesco T WhobreyGermany2026-06-05Rousseaux, Michael Esq PROPOSAL53Anna Fali
1026Munro V GillianIndia2026-06-08Chapman, Ross E Esq QUALIFIED23Ivan Magalhaes
1027Francesco U CaldareraFrance2026-06-17Dorl, James J Esq RENEWAL55Xuxue Feng
1028David O WaycottIndia2026-06-27Chapman, Ross E Esq NEGOTIATION49Ivan Magalhaes
1029Maria M CampainSpain2026-06-14Dorl, James J Esq QUALIFIED0Ivan Magalhaes
1030Smith V BologniaRussia2026-06-29Chemel, James L Cpa QUALIFIED39Stephen Shaw
1031Leon E ShinkoItaly2026-07-03Feltz Printing Service QUALIFIED63Ioni Bowcher
1032Chavez G GarufiRussia2026-06-21Feltz Printing Service PROPOSAL70Stephen Shaw
1033James G BowleyUnited Kingdom2026-06-27Chapman, Ross E Esq PROPOSAL97Anna Fali
1034Maisha C InouyeBrazil2026-06-07Morlong Associates PROPOSAL57Ivan Magalhaes
1035Deepesh U MaletIndia2026-07-03Feltz Printing Service RENEWAL14Anna Fali
1036Izzy J SchemmerAustralia2026-06-20Rangoni Of Florence PROPOSAL23Bernardo Dominic
1037Deepesh V GlickItaly2026-06-12Rangoni Of Florence PROPOSAL57Ivan Magalhaes
1038Maria E FerenczFrance2026-06-23Chapman, Ross E Esq NEGOTIATION43Stephen Shaw
1039Smith X AmigonCanada2026-06-23Chanay, Jeffrey A Esq NEW7Bernardo Dominic
1040Juan Q GillianBrazil2026-06-13Truhlar And Truhlar Attys RENEWAL97Onyama Limba
1041Deepesh Y FollerItaly2026-06-28Rousseaux, Michael Esq NEGOTIATION45Ivan Magalhaes
1042Aika N WieserGermany2026-06-22Benton, John B Jr NEGOTIATION88Ivan Magalhaes
1043Chavez J RulapaughAustralia2026-06-11Chemel, James L Cpa UNQUALIFIED9Bernardo Dominic
1044Maisha X ChuiCanada2026-06-06Benton, John B Jr RENEWAL76Ioni Bowcher
1045Salvatore Z PerinSpain2026-06-26Dorl, James J Esq UNQUALIFIED13Amy Elsner
1046Aika M RulapaughFrance2026-06-26Morlong Associates NEW70Amy Elsner
1047Leja T StockhamFrance2026-06-09Chemel, James L Cpa RENEWAL85Onyama Limba
1048Isabel C NickaCanada2026-07-03Benton, John B Jr UNQUALIFIED99Stephen Shaw
1049Ivar J FollerCanada2026-06-26Chapman, Ross E Esq QUALIFIED97Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Aruna L FigeroaItalyElwin Sharvill PROPOSAL
Antonio Y StensethArgentinaAsiya Javayant UNQUALIFIED
Ricardo V MorascaRussiaAnna Fali NEGOTIATION
Costa Q TollnerJapanIoni Bowcher UNQUALIFIED
Ivar C RoysterBrazilAsiya Javayant UNQUALIFIED
Leon Q NestleCanadaIvan Magalhaes PROPOSAL
Alejandro J RutaIndiaOnyama Limba UNQUALIFIED
Tony Y StensethBrazilOnyama Limba UNQUALIFIED
Wickens B GlickIndiaIvan Magalhaes QUALIFIED
Francesco A CampainGermanyStephen Shaw PROPOSAL
Costa J FollerBrazilIoni Bowcher PROPOSAL
Wickens H AlbaresIndiaIoni Bowcher NEGOTIATION
Wickens P DarakjyItalyAnna Fali UNQUALIFIED
Claire G GarufiGermanyBernardo Dominic RENEWAL
Izzy V PerinIndiaIoni Bowcher RENEWAL
Aditya X RoysterFranceStephen Shaw PROPOSAL
Jones E FerenczItalyBernardo Dominic NEGOTIATION
David R NestleIndiaIoni Bowcher PROPOSAL
Wickens B GillianBrazilXuxue Feng QUALIFIED
Tony J GlickJapanStephen Shaw UNQUALIFIED
Alejandro K MacleadGermanyAmy Elsner RENEWAL
Juan I ButtBrazilXuxue Feng UNQUALIFIED
Aruna A NickaArgentinaIoni Bowcher PROPOSAL
Antonio F PoquetteItalyBernardo Dominic NEW
Jeanfrancois K DilliardJapanElwin Sharvill PROPOSAL
Johnson F KolmetzItalyIvan Magalhaes RENEWAL
Nicolas S ChuiCanadaXuxue Feng UNQUALIFIED
Ricardo J VocelkaIndiaAmy Elsner NEGOTIATION
Juan H PaprockiSpainElwin Sharvill PROPOSAL
Ivar T OstroskyItalyXuxue Feng RENEWAL
Cody D CaudyArgentinaAnna Fali RENEWAL
Chavez G MarrierFranceXuxue Feng QUALIFIED
Greenwood G RulapaughFranceElwin Sharvill NEW
Johnson T ShinkoRussiaStephen Shaw UNQUALIFIED
Salvatore T InouyeItalyOnyama Limba RENEWAL
Mujtaba N BologniaSpainXuxue Feng PROPOSAL
Alejandro V ButtFranceAmy Elsner NEW
Silvio Y InouyeRussiaOnyama Limba QUALIFIED
Johnson G ShinkoItalyXuxue Feng RENEWAL
Ivar M RulapaughAustraliaIoni Bowcher NEW
James U VocelkaAustraliaStephen Shaw NEGOTIATION
Munro H DarakjyGermanyBernardo Dominic NEGOTIATION
Clifford G SchemmerSpainElwin Sharvill PROPOSAL
Jennifer G GillianAustraliaAmy Elsner NEGOTIATION
Adams J OstroskyItalyIoni Bowcher PROPOSAL
Ivar Y FerenczGermanyAsiya Javayant PROPOSAL
Ashley L OldroydArgentinaAnna Fali RENEWAL
Morrow R GauchoIndiaAnna Fali NEW
Mayumi B BriddickAustraliaStephen Shaw NEW
Deepesh Q SchemmerBrazilOnyama Limba QUALIFIED
Frozen Columns
Name
Leja G Gillian
Arvin D Nestle
Jones J Rulapaugh
Deepesh U Sergi
Chavez L Inouye
Morrow I Malet
Sinclair O Tollner
Julie O Garufi
David V Ruta
Julie O Marrier
Deepesh L Rim
Cody L Chui
Emily J Malet
Salvatore A Tollner
Stacey F Stenseth
Adams C Kusko
Jennifer T Flosi
Ivar Z Tollner
Cody R Garufi
Wickens H Caudy
Nicolas O Inouye
Jefferson A Malet
Jones B Albares
Murillo Q Bolognia
Deepesh L Saylors
Jennifer W Rim
Emily L Wieser
Salvatore G Amigon
Aditya R Chui
Julie V Ruta
Aditya U Foller
Maria B Kusko
Maisha H Royster
Kaitlin L Albares
Leon V Caldarera
Greenwood M Inouye
Ricardo Y Venere
Jefferson S Vocelka
Claire K Nicka
Claire D Bolognia
Nicolas B Malet
Faith B Gaucho
Leja W Perin
Jones H Perin
Costa C Amigon
Cody Z Maclead
David U Tollner
Isabel Q Rulapaugh
Nicolas H Maclead
Mayumi S Caudy
IdCountryDate
1000Spain2026-06-06
1001Spain2026-06-15
1002Italy2026-06-06
1003United Kingdom2026-06-28
1004Russia2026-06-27
1005France2026-07-03
1006Australia2026-07-01
1007Italy2026-06-20
1008India2026-06-08
1009India2026-06-09
1010Italy2026-06-17
1011Germany2026-07-01
1012Germany2026-06-21
1013Brazil2026-06-12
1014Italy2026-06-27
1015Russia2026-06-10
1016Brazil2026-06-11
1017United Kingdom2026-06-12
1018Russia2026-07-02
1019Japan2026-06-11
1020France2026-07-01
1021France2026-06-14
1022Canada2026-06-23
1023Japan2026-06-17
1024France2026-06-26
1025Japan2026-06-18
1026Japan2026-07-04
1027Italy2026-06-29
1028Russia2026-06-09
1029Spain2026-06-20
1030Russia2026-06-29
1031Spain2026-06-10
1032France2026-07-02
1033Russia2026-06-15
1034Canada2026-06-19
1035Australia2026-06-11
1036Argentina2026-06-08
1037Brazil2026-06-06
1038Brazil2026-06-13
1039India2026-06-06
1040Canada2026-06-27
1041Germany2026-06-27
1042India2026-06-16
1043Canada2026-07-04
1044Germany2026-06-05
1045Canada2026-06-15
1046Brazil2026-06-28
1047Germany2026-06-23
1048Brazil2026-07-03
1049Russia2026-06-21

On-Demand Data

NameIdCountryDate
Smith J Ferencz1000United Kingdom2026-07-01
Wickens E Oldroyd1001India2026-07-02
Julie A Campain1002Spain2026-06-21
Aditya H Royster1003India2026-06-19
Jennifer P Figeroa1004France2026-06-30
Aditya Y Dilliard1005Argentina2026-06-05
Mayumi X Caudy1006Russia2026-06-16
Wickens E Nestle1007United Kingdom2026-06-30
Leja V Ostrosky1008India2026-06-16
Darci I Poquette1009Brazil2026-07-04
Ivar R Darakjy1010Argentina2026-06-24
Clifford X Tollner1011France2026-06-23
Sinclair D Shinko1012India2026-06-10
Greenwood W Malet1013Italy2026-06-13
Maisha I Amigon1014France2026-06-14
Morrow R Figeroa1015United Kingdom2026-06-28
Antonio T Stenseth1016Italy2026-06-09
Arvin R Malet1017Spain2026-06-16
Mujtaba Z Wieser1018Russia2026-06-08
Jennifer U Bowley1019Italy2026-07-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika T ButtRussiaOnyama Limba UNQUALIFIED
Silvio T KolmetzIndiaStephen Shaw RENEWAL
Sinclair V CaldareraUnited KingdomStephen Shaw RENEWAL
Julie K WaycottIndiaAmy Elsner RENEWAL
Darci Y WieserAustraliaAsiya Javayant NEGOTIATION
Salvatore R MacleadAustraliaOnyama Limba QUALIFIED
Maria M VocelkaSpainXuxue Feng NEW
Leon M OstroskyCanadaIoni Bowcher NEGOTIATION
Isabel Q CampainIndiaOnyama Limba NEGOTIATION
Julie K PerinArgentinaAsiya Javayant NEGOTIATION
Julie Z PaprockiFranceAmy Elsner NEGOTIATION
Aruna M FollerRussiaOnyama Limba NEGOTIATION
Faith R DarakjyGermanyAsiya Javayant NEGOTIATION
Jeanfrancois I RimJapanIoni Bowcher NEW
Arvin C ShinkoRussiaIoni Bowcher NEGOTIATION
Octavia D ChuiArgentinaXuxue Feng UNQUALIFIED
Murillo C MaletItalyStephen Shaw UNQUALIFIED
Salvatore D CaldareraJapanOnyama Limba NEW
Mujtaba O BowleyArgentinaOnyama Limba NEGOTIATION
Leja D MacleadJapanElwin Sharvill QUALIFIED
Maisha Q StensethGermanyIoni Bowcher NEW
Munro N WaycottFranceOnyama Limba NEW
Nicolas K ButtIndiaElwin Sharvill NEGOTIATION
Tony N BowleyJapanAmy Elsner UNQUALIFIED
Aruna I FigeroaBrazilAsiya Javayant RENEWAL
Mayumi Y StockhamRussiaIoni Bowcher NEGOTIATION
Aika H SergiCanadaIvan Magalhaes UNQUALIFIED
Claire V GauchoItalyBernardo Dominic PROPOSAL
Francesco Y AmigonFranceIoni Bowcher NEW
Ivar J TollnerArgentinaAmy Elsner QUALIFIED
Chavez J VenereCanadaXuxue Feng UNQUALIFIED
Chavez O InouyeAustraliaOnyama Limba QUALIFIED
Emily C ButtGermanyXuxue Feng NEW
Stacey A RutaArgentinaBernardo Dominic PROPOSAL
Salvatore Z MarrierFranceAmy Elsner NEW
Clifford E KolmetzRussiaAnna Fali QUALIFIED
Octavia M FlosiItalyOnyama Limba NEW
Greenwood J FigeroaSpainBernardo Dominic UNQUALIFIED
Arvin C SaylorsAustraliaElwin Sharvill UNQUALIFIED
Mayumi B KuskoCanadaBernardo Dominic NEW

<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>