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
Munro U RulapaughFranceBernardo Dominic UNQUALIFIED
Jones U CaldareraCanadaIvan Magalhaes NEW
Francesco K DilliardGermanyAsiya Javayant PROPOSAL
Aika K VocelkaIndiaAsiya Javayant NEGOTIATION
Jennifer S SlusarskiItalyIvan Magalhaes QUALIFIED
Juan L PerinIndiaAmy Elsner UNQUALIFIED
Clifford V IturbideItalyOnyama Limba UNQUALIFIED
Mayumi V StensethSpainIvan Magalhaes NEW
Kaitlin B NestleBrazilElwin Sharvill UNQUALIFIED
Wickens T TollnerUnited KingdomXuxue Feng NEGOTIATION
Alejandro K WieserUnited KingdomAnna Fali UNQUALIFIED
Isabel V PaprockiCanadaElwin Sharvill NEW
Munro P BologniaGermanyIvan Magalhaes QUALIFIED
Salvatore B CampainUnited KingdomIoni Bowcher NEGOTIATION
Costa C OstroskyUnited KingdomAsiya Javayant PROPOSAL
Kaitlin G CaldareraSpainXuxue Feng NEGOTIATION
Mayumi Q InouyeJapanIvan Magalhaes UNQUALIFIED
James E ShinkoIndiaIvan Magalhaes UNQUALIFIED
Smith M FollerItalyBernardo Dominic RENEWAL
Jefferson Z IturbideFranceBernardo Dominic RENEWAL
Faith W BriddickGermanyElwin Sharvill NEW
Darci O TollnerAustraliaStephen Shaw QUALIFIED
Francesco Z FlosiCanadaOnyama Limba PROPOSAL
Silvio Y ChuiAustraliaElwin Sharvill NEGOTIATION
Ivar F StockhamItalyAmy Elsner UNQUALIFIED
Clifford Z SlusarskiBrazilAsiya Javayant PROPOSAL
Murillo S KuskoCanadaBernardo Dominic NEW
Francesco S FlosiUnited KingdomIvan Magalhaes QUALIFIED
Smith H DoeUnited KingdomAsiya Javayant NEGOTIATION
David X MaletAustraliaAsiya Javayant RENEWAL
Julie R MorascaIndiaAsiya Javayant PROPOSAL
Morrow Z StockhamItalyIvan Magalhaes UNQUALIFIED
Johnson Z BowleySpainXuxue Feng NEW
Ricardo Q RimArgentinaIoni Bowcher PROPOSAL
Octavia J KuskoGermanyIvan Magalhaes QUALIFIED
Octavia G FlosiItalyIvan Magalhaes PROPOSAL
Stacey H WieserAustraliaBernardo Dominic QUALIFIED
Salvatore U VocelkaSpainBernardo Dominic QUALIFIED
Isabel P WieserItalyXuxue Feng PROPOSAL
Jennifer B WaycottItalyBernardo Dominic NEW
Mayumi R ShinkoArgentinaElwin Sharvill RENEWAL
Leja W DarakjyBrazilAnna Fali NEGOTIATION
James S SchemmerJapanBernardo Dominic QUALIFIED
Kadeem D MaletArgentinaBernardo Dominic QUALIFIED
Aditya H PaprockiItalyElwin Sharvill NEW
Jones N MaletIndiaStephen Shaw UNQUALIFIED
Salvatore J SaylorsArgentinaAsiya Javayant QUALIFIED
Kaitlin Q DoeAustraliaElwin Sharvill RENEWAL
Munro O BologniaGermanyXuxue Feng PROPOSAL
Wickens K FerenczArgentinaAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Darci A CaudyFranceAmy Elsner QUALIFIED
Emily Z RoysterRussiaIvan Magalhaes NEW
Maisha K RoysterRussiaBernardo Dominic UNQUALIFIED
Johnson J ButtRussiaAsiya Javayant UNQUALIFIED
Cody C DarakjyCanadaBernardo Dominic QUALIFIED
Johnson I InouyeArgentinaAmy Elsner QUALIFIED
Misaki A SaylorsBrazilIvan Magalhaes NEGOTIATION
Leon U StockhamSpainAnna Fali QUALIFIED
Aika H IturbideItalyElwin Sharvill NEW
Johnson X ButtCanadaIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000David R RulapaughItaly2025-04-24Truhlar And Truhlar Attys UNQUALIFIED45Stephen Shaw
1001Izzy A AmigonAustralia2025-04-29Buckley Miller Wright UNQUALIFIED8Asiya Javayant
1002Leja A MarrierFrance2025-04-30Chanay, Jeffrey A Esq QUALIFIED25Bernardo Dominic
1003Ricardo C CaudyArgentina2025-05-07King, Christopher A Esq RENEWAL27Elwin Sharvill
1004Mayumi S FerenczFrance2025-04-26Truhlar And Truhlar Attys RENEWAL32Amy Elsner
1005Deepesh G VocelkaRussia2025-05-09Feltz Printing Service UNQUALIFIED76Stephen Shaw
1006Adams S SchemmerRussia2025-04-26Buckley Miller Wright NEW92Ivan Magalhaes
1007Darci O IturbideArgentina2025-04-30Rousseaux, Michael Esq NEGOTIATION79Onyama Limba
1008Misaki C PaprockiIndia2025-04-18Feiner Bros UNQUALIFIED83Ioni Bowcher
1009Alejandro G SergiAustralia2025-04-27Feiner Bros QUALIFIED10Ivan Magalhaes
1010Claire W ShinkoGermany2025-04-30Dorl, James J Esq UNQUALIFIED21Amy Elsner
1011Jeanfrancois L MaletGermany2025-04-17Chapman, Ross E Esq RENEWAL5Bernardo Dominic
1012Greenwood Q StensethItaly2025-05-06Buckley Miller Wright PROPOSAL17Asiya Javayant
1013Cody J VocelkaRussia2025-04-13King, Christopher A Esq QUALIFIED87Bernardo Dominic
1014Mujtaba P GarufiUnited Kingdom2025-04-26King, Christopher A Esq PROPOSAL57Anna Fali
1015Faith T InouyeRussia2025-04-26Benton, John B Jr NEGOTIATION82Xuxue Feng
1016Claire L MaletItaly2025-04-13Commercial Press RENEWAL68Amy Elsner
1017Rodrigues R SlusarskiArgentina2025-04-12Chapman, Ross E Esq NEW5Ioni Bowcher
1018Jeanfrancois I ChuiAustralia2025-04-27Buckley Miller Wright NEGOTIATION12Stephen Shaw
1019Darci G ButtBrazil2025-04-19Printing Dimensions RENEWAL15Elwin Sharvill
1020Mujtaba O MaletRussia2025-05-04Chapman, Ross E Esq QUALIFIED95Ivan Magalhaes
1021Tony R StensethAustralia2025-04-28Benton, John B Jr PROPOSAL82Bernardo Dominic
1022Aruna Q SchemmerCanada2025-04-16Chemel, James L Cpa UNQUALIFIED22Stephen Shaw
1023Murillo V PoquetteBrazil2025-04-11Feltz Printing Service RENEWAL29Anna Fali
1024Jones Z GauchoUnited Kingdom2025-04-14Commercial Press RENEWAL26Onyama Limba
1025Greenwood Y ChuiJapan2025-04-11Rousseaux, Michael Esq QUALIFIED71Ivan Magalhaes
1026Francesco Y StockhamFrance2025-04-20Buckley Miller Wright NEGOTIATION55Bernardo Dominic
1027Jefferson F CampainItaly2025-04-28Printing Dimensions QUALIFIED63Elwin Sharvill
1028Silvio Z GarufiArgentina2025-04-28Truhlar And Truhlar Attys RENEWAL55Ivan Magalhaes
1029Leja V StockhamRussia2025-05-02Commercial Press UNQUALIFIED61Bernardo Dominic
1030Arvin T StensethArgentina2025-04-26Commercial Press NEW62Onyama Limba
1031Claire M RimJapan2025-04-25Printing Dimensions PROPOSAL4Ioni Bowcher
1032Leon Q IturbideSpain2025-05-06Printing Dimensions RENEWAL50Bernardo Dominic
1033Maria L MarrierUnited Kingdom2025-04-17Feiner Bros NEGOTIATION29Ivan Magalhaes
1034Aditya W StensethIndia2025-04-30Benton, John B Jr NEGOTIATION45Anna Fali
1035Jeanfrancois V StensethFrance2025-04-11Printing Dimensions PROPOSAL0Elwin Sharvill
1036Aditya B BriddickRussia2025-04-16Printing Dimensions PROPOSAL87Ivan Magalhaes
1037James N RoysterAustralia2025-04-15Rousseaux, Michael Esq QUALIFIED67Xuxue Feng
1038Murillo P RutaGermany2025-04-30Dorl, James J Esq QUALIFIED81Stephen Shaw
1039Johnson V PaprockiFrance2025-05-02Rangoni Of Florence NEW81Asiya Javayant
1040Jennifer O DoeAustralia2025-05-03Printing Dimensions UNQUALIFIED38Onyama Limba
1041Leja X GillianBrazil2025-04-23Rousseaux, Michael Esq NEW72Onyama Limba
1042Julie X CampainFrance2025-05-08Buckley Miller Wright QUALIFIED62Stephen Shaw
1043Johnson F BologniaGermany2025-04-26Rousseaux, Michael Esq UNQUALIFIED53Elwin Sharvill
1044Claire Z SergiAustralia2025-04-26Rangoni Of Florence RENEWAL42Bernardo Dominic
1045Alejandro Q GlickSpain2025-05-04Rousseaux, Michael Esq UNQUALIFIED82Stephen Shaw
1046Aditya T MarrierSpain2025-04-11Rangoni Of Florence QUALIFIED77Ivan Magalhaes
1047Aditya B StensethSpain2025-05-03Benton, John B Jr NEGOTIATION50Asiya Javayant
1048Faith H DilliardUnited Kingdom2025-05-08Chanay, Jeffrey A Esq QUALIFIED70Ioni Bowcher
1049Tony W CaldareraJapan2025-04-25Feiner Bros UNQUALIFIED19Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Kadeem R SergiItalyOnyama Limba UNQUALIFIED
Izzy P MacleadIndiaIoni Bowcher PROPOSAL
Leja V CaldareraGermanyIvan Magalhaes NEGOTIATION
Julie B MaletIndiaIvan Magalhaes QUALIFIED
Antonio I GillianUnited KingdomAsiya Javayant RENEWAL
Murillo I IturbideBrazilAsiya Javayant QUALIFIED
Johnson I OldroydGermanyStephen Shaw PROPOSAL
Sinclair E DoeCanadaAnna Fali RENEWAL
Nicolas F StensethRussiaIvan Magalhaes NEW
Jefferson D FollerSpainIoni Bowcher PROPOSAL
James C WaycottCanadaAsiya Javayant QUALIFIED
Leja J PoquetteSpainAsiya Javayant NEGOTIATION
Costa E DarakjyFranceAnna Fali RENEWAL
Salvatore F MorascaCanadaIvan Magalhaes UNQUALIFIED
Greenwood F OldroydAustraliaIvan Magalhaes QUALIFIED
Mujtaba E GillianUnited KingdomIvan Magalhaes UNQUALIFIED
Adams L GauchoUnited KingdomIoni Bowcher NEW
David C WieserCanadaElwin Sharvill PROPOSAL
Kadeem H VocelkaFranceAmy Elsner RENEWAL
Deepesh O KuskoSpainAmy Elsner UNQUALIFIED
Mujtaba B KolmetzJapanIvan Magalhaes UNQUALIFIED
Ricardo E InouyeSpainIvan Magalhaes NEW
Julie F MacleadIndiaAmy Elsner QUALIFIED
Arvin S ShinkoAustraliaStephen Shaw UNQUALIFIED
Juan B KolmetzRussiaXuxue Feng NEW
Francesco Z CaudyBrazilOnyama Limba RENEWAL
Tony X CaldareraFranceOnyama Limba PROPOSAL
Izzy Q VocelkaItalyStephen Shaw NEW
Octavia R FollerArgentinaIvan Magalhaes UNQUALIFIED
Arvin G CaldareraAustraliaOnyama Limba NEGOTIATION
Leja Y ChuiArgentinaIvan Magalhaes NEGOTIATION
Murillo S ShinkoUnited KingdomIoni Bowcher PROPOSAL
Salvatore J GauchoJapanStephen Shaw NEGOTIATION
Kadeem N MaletCanadaOnyama Limba NEW
Francesco P DoeItalyAmy Elsner PROPOSAL
Faith J BowleyCanadaElwin Sharvill UNQUALIFIED
Alejandro A ChuiItalyXuxue Feng NEGOTIATION
Jeanfrancois P CaldareraIndiaXuxue Feng PROPOSAL
Julie X BowleySpainAsiya Javayant NEGOTIATION
Julie C AlbaresJapanAsiya Javayant PROPOSAL
Alejandro V StockhamArgentinaXuxue Feng UNQUALIFIED
Munro I ButtUnited KingdomStephen Shaw RENEWAL
Smith P OldroydAustraliaXuxue Feng NEGOTIATION
Jefferson B StensethIndiaIoni Bowcher RENEWAL
Johnson T OldroydArgentinaAmy Elsner NEGOTIATION
Francesco K FigeroaFranceBernardo Dominic QUALIFIED
Jefferson A VocelkaItalyAsiya Javayant PROPOSAL
Arvin H NestleCanadaElwin Sharvill QUALIFIED
Darci S MarrierSpainBernardo Dominic PROPOSAL
Jeanfrancois Z NickaBrazilXuxue Feng NEGOTIATION
Frozen Columns
Name
Aditya P Darakjy
Johnson P Briddick
Murillo I Venere
Murillo S Perin
Julie O Doe
David P Gillian
Kaitlin H Gaucho
Juan F Gaucho
Ricardo N Malet
Isabel D Caudy
Mayumi A Chui
Emily K Waycott
Alejandro Y Caldarera
Munro E Rulapaugh
Salvatore E Nicka
Maisha B Iturbide
Mujtaba H Bowley
Munro O Waycott
Jeanfrancois H Glick
Francesco N Glick
Clifford N Maclead
Jones K Wieser
Costa F Malet
Wickens L Tollner
Nicolas Q Ostrosky
Tony Q Kusko
Rodrigues Z Campain
Stacey C Foller
Leja E Maclead
Kadeem U Ferencz
Faith E Rim
Arvin K Caudy
Darci M Venere
Alejandro N Garufi
David A Doe
Jefferson S Poquette
Kaitlin K Shinko
Izzy Q Garufi
Tony N Whobrey
James J Schemmer
Emily J Kusko
Antonio D Dilliard
Nicolas P Rim
Julie U Inouye
Stacey K Vocelka
Aditya W Campain
Murillo T Royster
Misaki Z Dilliard
Morrow U Morasca
Wickens C Chui
IdCountryDate
1000France2025-04-30
1001Brazil2025-05-02
1002Russia2025-04-24
1003Italy2025-04-29
1004Japan2025-05-08
1005Canada2025-04-14
1006France2025-05-01
1007India2025-04-30
1008Germany2025-04-14
1009Germany2025-04-22
1010Russia2025-04-16
1011Russia2025-04-22
1012Italy2025-05-01
1013Canada2025-04-21
1014Brazil2025-05-02
1015Brazil2025-04-28
1016Argentina2025-04-27
1017United Kingdom2025-05-02
1018France2025-05-09
1019Germany2025-04-30
1020Brazil2025-05-03
1021Argentina2025-04-28
1022Canada2025-05-01
1023Germany2025-04-21
1024Argentina2025-04-27
1025Spain2025-04-27
1026Russia2025-05-01
1027Australia2025-04-13
1028Canada2025-04-18
1029United Kingdom2025-05-09
1030Italy2025-04-25
1031Brazil2025-04-27
1032Australia2025-05-07
1033Russia2025-04-28
1034Canada2025-04-12
1035Brazil2025-04-15
1036Australia2025-04-30
1037Russia2025-04-17
1038Canada2025-04-22
1039Canada2025-04-15
1040Brazil2025-04-10
1041France2025-04-21
1042Germany2025-04-23
1043Germany2025-04-26
1044Japan2025-04-17
1045United Kingdom2025-04-17
1046Germany2025-04-29
1047Germany2025-04-14
1048India2025-04-25
1049Italy2025-05-09

On-Demand Data

NameIdCountryDate
Aruna A Amigon1000France2025-05-09
Ivar D Marrier1001Germany2025-05-03
Emily H Garufi1002Germany2025-05-05
Ricardo L Maclead1003India2025-04-22
Rodrigues R Caudy1004Germany2025-05-08
Johnson J Briddick1005Russia2025-04-23
Leja K Schemmer1006India2025-04-23
Munro O Malet1007Spain2025-04-30
Rodrigues B Rulapaugh1008Spain2025-04-15
Johnson U Kusko1009France2025-04-16
Jeanfrancois X Paprocki1010Australia2025-04-21
Maria V Oldroyd1011Spain2025-04-20
Arvin V Ferencz1012Italy2025-04-28
Adams K Iturbide1013Germany2025-05-05
Nicolas Z Nicka1014India2025-04-22
Silvio U Shinko1015Australia2025-04-12
Mujtaba V Stenseth1016Russia2025-04-11
Greenwood B Foller1017Argentina2025-04-18
Maisha Q Foller1018Japan2025-05-07
Juan B Caldarera1019United Kingdom2025-05-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Murillo S InouyeArgentinaAsiya Javayant PROPOSAL
Antonio T ShinkoAustraliaAnna Fali QUALIFIED
Greenwood M AmigonUnited KingdomAmy Elsner NEGOTIATION
Ashley W CaudyRussiaOnyama Limba UNQUALIFIED
Leon Z CampainCanadaBernardo Dominic NEW
Greenwood I AmigonJapanElwin Sharvill UNQUALIFIED
Antonio W CampainSpainXuxue Feng PROPOSAL
Jennifer J OstroskyAustraliaOnyama Limba PROPOSAL
Antonio D DilliardBrazilIoni Bowcher NEGOTIATION
Jefferson H CaudyIndiaBernardo Dominic NEW
Francesco Y KuskoIndiaAnna Fali UNQUALIFIED
Maisha P SlusarskiAustraliaXuxue Feng NEW
Antonio Y KuskoArgentinaBernardo Dominic RENEWAL
Jeanfrancois X RoysterJapanOnyama Limba UNQUALIFIED
Jennifer U ButtRussiaOnyama Limba UNQUALIFIED
Ricardo Q ShinkoFranceOnyama Limba QUALIFIED
Munro E DoeBrazilIoni Bowcher NEW
Izzy P StensethGermanyBernardo Dominic UNQUALIFIED
Nicolas L TollnerArgentinaAsiya Javayant NEW
Nicolas E VocelkaIndiaBernardo Dominic QUALIFIED
Izzy A PoquetteSpainAnna Fali UNQUALIFIED
Kaitlin A GarufiCanadaAnna Fali NEGOTIATION
Ashley C NickaItalyElwin Sharvill UNQUALIFIED
Ashley Q VenereJapanBernardo Dominic UNQUALIFIED
Aika Z CaudyAustraliaAmy Elsner UNQUALIFIED
Munro B MacleadIndiaAsiya Javayant NEGOTIATION
Faith F RoysterGermanyAmy Elsner NEW
Jennifer L IturbideBrazilAsiya Javayant UNQUALIFIED
Ivar O WhobreyCanadaIvan Magalhaes PROPOSAL
Salvatore L CampainIndiaOnyama Limba RENEWAL
Deepesh Q SergiFranceBernardo Dominic NEW
Costa D RulapaughFranceAmy Elsner PROPOSAL
Wickens M AmigonArgentinaIoni Bowcher PROPOSAL
Maria J VocelkaJapanAmy Elsner PROPOSAL
Deepesh E GillianSpainXuxue Feng RENEWAL
Jefferson U VocelkaItalyAnna Fali QUALIFIED
Juan Y WieserUnited KingdomElwin Sharvill NEGOTIATION
Cody M CaudyGermanyBernardo Dominic PROPOSAL
Aditya V DoeFranceXuxue Feng QUALIFIED
Chavez F StockhamArgentinaAnna Fali RENEWAL

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