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
Cody F MorascaItalyIoni Bowcher PROPOSAL
Tony Y OstroskyUnited KingdomXuxue Feng NEW
David D GauchoRussiaAsiya Javayant QUALIFIED
Nicolas Q MaletItalyElwin Sharvill NEW
Mujtaba S PoquetteCanadaXuxue Feng NEGOTIATION
Mayumi I KolmetzGermanyAsiya Javayant NEW
Morrow Z GillianAustraliaIvan Magalhaes QUALIFIED
Cody Z MorascaJapanXuxue Feng UNQUALIFIED
Aruna D RutaIndiaAmy Elsner PROPOSAL
Ricardo H ButtSpainStephen Shaw PROPOSAL
Ashley Y WhobreyArgentinaElwin Sharvill PROPOSAL
Kaitlin M SlusarskiUnited KingdomAnna Fali NEW
Kaitlin P MaletFranceIvan Magalhaes RENEWAL
Emily T VocelkaFranceElwin Sharvill QUALIFIED
Murillo L BriddickGermanyAsiya Javayant QUALIFIED
Smith U BriddickSpainAnna Fali NEGOTIATION
Nicolas S GlickArgentinaAsiya Javayant NEGOTIATION
Clifford R GlickItalyElwin Sharvill NEGOTIATION
Salvatore D MacleadGermanyStephen Shaw QUALIFIED
Leja Z ShinkoJapanIoni Bowcher PROPOSAL
Kaitlin R DarakjyGermanyAmy Elsner NEGOTIATION
Sinclair B MaletJapanXuxue Feng UNQUALIFIED
Juan T SchemmerUnited KingdomStephen Shaw NEGOTIATION
Tony N ButtRussiaBernardo Dominic NEGOTIATION
Ashley V GauchoCanadaOnyama Limba QUALIFIED
Chavez A GarufiSpainIoni Bowcher UNQUALIFIED
Ashley L AmigonCanadaElwin Sharvill UNQUALIFIED
Chavez N VocelkaCanadaIoni Bowcher QUALIFIED
Costa D KuskoJapanIoni Bowcher NEGOTIATION
Octavia K FigeroaCanadaOnyama Limba NEW
Octavia J ShinkoJapanBernardo Dominic QUALIFIED
Octavia X WieserUnited KingdomElwin Sharvill RENEWAL
Adams M PaprockiAustraliaStephen Shaw UNQUALIFIED
Claire X CaldareraBrazilAmy Elsner NEW
Jennifer U SlusarskiJapanXuxue Feng QUALIFIED
Sinclair Q TollnerFranceBernardo Dominic RENEWAL
Arvin U KuskoCanadaAnna Fali RENEWAL
Aruna M NestleGermanyAmy Elsner NEW
Jones V StensethCanadaIvan Magalhaes UNQUALIFIED
Jones C FigeroaUnited KingdomOnyama Limba NEGOTIATION
Tony Z IturbideCanadaIvan Magalhaes NEW
Jones N KolmetzIndiaAmy Elsner PROPOSAL
James T MacleadRussiaIoni Bowcher RENEWAL
Maisha S ShinkoGermanyOnyama Limba PROPOSAL
Silvio R CaldareraCanadaAmy Elsner RENEWAL
Izzy P MacleadArgentinaAnna Fali UNQUALIFIED
Ashley T WaycottJapanElwin Sharvill QUALIFIED
Emily R SlusarskiBrazilXuxue Feng NEGOTIATION
Murillo M IturbideFranceElwin Sharvill PROPOSAL
Costa G WhobreyAustraliaOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Murillo T StensethItalyBernardo Dominic RENEWAL
Octavia Y FlosiArgentinaOnyama Limba UNQUALIFIED
Salvatore H CaldareraGermanyBernardo Dominic NEGOTIATION
Emily E FollerArgentinaOnyama Limba RENEWAL
Sinclair D GlickGermanyIvan Magalhaes QUALIFIED
Misaki T OldroydBrazilElwin Sharvill NEW
Sinclair L RoysterFranceAmy Elsner NEGOTIATION
Antonio G SlusarskiCanadaIvan Magalhaes PROPOSAL
Kadeem C WhobreyFranceAsiya Javayant PROPOSAL
Aditya V StensethSpainOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas G BowleyRussia2026-07-18Printing Dimensions NEGOTIATION12Anna Fali
1001Aditya V OldroydCanada2026-07-27Feiner Bros PROPOSAL40Onyama Limba
1002Maisha K RoysterRussia2026-07-15Chanay, Jeffrey A Esq PROPOSAL57Ivan Magalhaes
1003Munro H WieserUnited Kingdom2026-07-13Benton, John B Jr NEGOTIATION51Xuxue Feng
1004Aika H StockhamAustralia2026-07-26King, Christopher A Esq QUALIFIED46Elwin Sharvill
1005Aditya U FerenczItaly2026-07-30Buckley Miller Wright PROPOSAL7Amy Elsner
1006Juan R SchemmerArgentina2026-08-06Commercial Press RENEWAL55Anna Fali
1007Jones V PerinFrance2026-07-18Rousseaux, Michael Esq UNQUALIFIED8Bernardo Dominic
1008Kaitlin Q IturbideArgentina2026-07-19Truhlar And Truhlar Attys UNQUALIFIED94Elwin Sharvill
1009Julie N SergiBrazil2026-07-11Dorl, James J Esq PROPOSAL85Amy Elsner
1010Greenwood P IturbideGermany2026-07-20Chemel, James L Cpa PROPOSAL98Amy Elsner
1011Francesco V ShinkoJapan2026-07-10Chemel, James L Cpa RENEWAL24Asiya Javayant
1012Rodrigues W KuskoArgentina2026-07-23Rousseaux, Michael Esq UNQUALIFIED35Xuxue Feng
1013James B MacleadAustralia2026-08-06Buckley Miller Wright NEGOTIATION13Anna Fali
1014Juan Y InouyeSpain2026-07-13Rangoni Of Florence NEGOTIATION60Bernardo Dominic
1015Tony B AmigonUnited Kingdom2026-07-10Feltz Printing Service NEGOTIATION20Ivan Magalhaes
1016Kadeem E GillianFrance2026-07-09Buckley Miller Wright RENEWAL81Xuxue Feng
1017Kadeem I CaudyAustralia2026-07-23Buckley Miller Wright UNQUALIFIED87Anna Fali
1018Maisha L BologniaIndia2026-07-23King, Christopher A Esq QUALIFIED78Xuxue Feng
1019Maisha D RulapaughBrazil2026-07-28Chanay, Jeffrey A Esq RENEWAL61Elwin Sharvill
1020Arvin U GarufiRussia2026-07-23Feltz Printing Service NEW77Elwin Sharvill
1021Ivar H PaprockiIndia2026-08-01Rousseaux, Michael Esq NEW80Asiya Javayant
1022Maria Y OldroydIndia2026-07-28Dorl, James J Esq QUALIFIED78Onyama Limba
1023Greenwood Z StensethCanada2026-08-05Benton, John B Jr UNQUALIFIED39Amy Elsner
1024Octavia D RulapaughBrazil2026-08-01Dorl, James J Esq NEGOTIATION4Bernardo Dominic
1025Aruna E SlusarskiSpain2026-07-16Truhlar And Truhlar Attys NEW84Amy Elsner
1026Misaki C AmigonCanada2026-07-30Chanay, Jeffrey A Esq UNQUALIFIED6Asiya Javayant
1027Isabel H KolmetzIndia2026-07-27Morlong Associates UNQUALIFIED50Ioni Bowcher
1028Arvin V PoquetteBrazil2026-07-31Commercial Press NEGOTIATION61Ivan Magalhaes
1029Costa I SergiAustralia2026-07-25Commercial Press RENEWAL69Amy Elsner
1030Aruna T ShinkoUnited Kingdom2026-07-23Rangoni Of Florence RENEWAL16Ivan Magalhaes
1031Cody C CaldareraSpain2026-07-16Chapman, Ross E Esq PROPOSAL4Amy Elsner
1032Ivar T StockhamIndia2026-07-26Printing Dimensions NEGOTIATION29Stephen Shaw
1033Ricardo C WaycottArgentina2026-07-24Feltz Printing Service RENEWAL0Xuxue Feng
1034Isabel Y WhobreyRussia2026-07-15Chemel, James L Cpa QUALIFIED5Xuxue Feng
1035Ashley P WieserCanada2026-07-22Rousseaux, Michael Esq QUALIFIED27Bernardo Dominic
1036Kadeem C BowleyBrazil2026-07-15Chanay, Jeffrey A Esq RENEWAL55Ioni Bowcher
1037Greenwood X GauchoUnited Kingdom2026-07-26Morlong Associates NEGOTIATION11Ioni Bowcher
1038Misaki G GarufiBrazil2026-08-01Printing Dimensions QUALIFIED3Bernardo Dominic
1039Kaitlin Z TollnerCanada2026-08-04Printing Dimensions NEW83Stephen Shaw
1040Mujtaba S NestleSpain2026-07-09Commercial Press PROPOSAL28Ioni Bowcher
1041Julie U OstroskyArgentina2026-08-04Feltz Printing Service PROPOSAL62Stephen Shaw
1042David R OldroydAustralia2026-07-22Rangoni Of Florence NEGOTIATION40Ivan Magalhaes
1043Johnson F BowleyCanada2026-08-03Truhlar And Truhlar Attys PROPOSAL1Bernardo Dominic
1044Smith U StockhamCanada2026-08-03Rangoni Of Florence RENEWAL19Onyama Limba
1045Jennifer J RimUnited Kingdom2026-08-02Benton, John B Jr PROPOSAL3Elwin Sharvill
1046Tony Q PerinItaly2026-07-31Printing Dimensions NEW18Anna Fali
1047Nicolas D WhobreyFrance2026-07-11Benton, John B Jr PROPOSAL85Elwin Sharvill
1048Julie T StensethBrazil2026-07-16Rousseaux, Michael Esq NEGOTIATION47Onyama Limba
1049Emily U SergiIndia2026-07-09King, Christopher A Esq NEGOTIATION64Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
David C DoeFranceElwin Sharvill UNQUALIFIED
Jeanfrancois Z RimCanadaXuxue Feng UNQUALIFIED
Mayumi H ButtIndiaStephen Shaw UNQUALIFIED
Ivar Y SchemmerSpainIvan Magalhaes UNQUALIFIED
Greenwood H ButtGermanyBernardo Dominic NEW
Greenwood H MaletCanadaOnyama Limba UNQUALIFIED
Wickens X OstroskyFranceElwin Sharvill NEGOTIATION
Faith F WieserArgentinaAsiya Javayant QUALIFIED
Silvio U ChuiIndiaIoni Bowcher PROPOSAL
Chavez N ButtArgentinaAmy Elsner PROPOSAL
Ashley Y NickaCanadaIvan Magalhaes RENEWAL
Ashley N CampainBrazilIoni Bowcher QUALIFIED
Mayumi K MarrierIndiaOnyama Limba NEGOTIATION
Julie T RimCanadaIvan Magalhaes NEGOTIATION
Alejandro H BriddickGermanyOnyama Limba NEW
Morrow C GarufiCanadaIoni Bowcher PROPOSAL
Murillo X CaldareraGermanyOnyama Limba QUALIFIED
Maisha Z KuskoUnited KingdomAmy Elsner PROPOSAL
Arvin B VenereIndiaStephen Shaw RENEWAL
Munro U OldroydSpainAsiya Javayant UNQUALIFIED
Salvatore N OldroydRussiaAmy Elsner RENEWAL
Johnson B KuskoBrazilAsiya Javayant UNQUALIFIED
Greenwood Y PoquetteSpainOnyama Limba UNQUALIFIED
Maisha M MarrierSpainElwin Sharvill RENEWAL
Claire B DoeGermanyAsiya Javayant NEGOTIATION
Wickens O GillianSpainAnna Fali PROPOSAL
Rodrigues E GillianFranceXuxue Feng NEGOTIATION
Tony Y MacleadRussiaAmy Elsner RENEWAL
Izzy X NestleAustraliaAnna Fali PROPOSAL
Munro I ChuiGermanyAmy Elsner QUALIFIED
Sinclair N NestleBrazilIvan Magalhaes NEGOTIATION
Wickens Y BriddickFranceElwin Sharvill PROPOSAL
Misaki U AmigonRussiaOnyama Limba RENEWAL
Salvatore P GillianIndiaBernardo Dominic RENEWAL
Smith J MaletBrazilElwin Sharvill RENEWAL
Kadeem A KolmetzGermanyIoni Bowcher QUALIFIED
Greenwood E BologniaJapanAnna Fali UNQUALIFIED
Isabel S FigeroaUnited KingdomAnna Fali RENEWAL
Aditya Z CaldareraCanadaIoni Bowcher NEW
Ricardo P MacleadJapanOnyama Limba UNQUALIFIED
Johnson O RutaUnited KingdomIoni Bowcher PROPOSAL
Isabel Y GauchoBrazilAsiya Javayant UNQUALIFIED
Deepesh W KuskoSpainIoni Bowcher PROPOSAL
Francesco R OldroydAustraliaOnyama Limba PROPOSAL
Clifford I VenereUnited KingdomOnyama Limba RENEWAL
Aruna E RutaArgentinaOnyama Limba PROPOSAL
Faith S RimBrazilElwin Sharvill NEW
Silvio Z SergiUnited KingdomStephen Shaw PROPOSAL
Kaitlin H InouyeSpainIvan Magalhaes UNQUALIFIED
Johnson B InouyeCanadaIvan Magalhaes RENEWAL
Frozen Columns
Name
Chavez P Ostrosky
Greenwood U Foller
Morrow Z Perin
Kaitlin N Gillian
Aika U Venere
Claire O Foller
Maisha W Inouye
Murillo Z Caudy
Adams M Paprocki
Arvin D Oldroyd
Cody P Schemmer
Claire V Marrier
Antonio U Maclead
Stacey A Foller
James I Gaucho
Octavia Y Garufi
Adams E Inouye
Johnson N Gaucho
Chavez L Shinko
Chavez X Whobrey
Isabel W Kusko
Antonio K Inouye
Ashley G Flosi
Mujtaba H Morasca
Stacey K Perin
Sinclair A Kusko
Johnson K Albares
Leon R Ruta
Izzy A Nestle
James V Stenseth
Leon C Malet
Wickens M Amigon
Aruna D Gaucho
Wickens T Marrier
Antonio F Kolmetz
Isabel T Sergi
Maisha L Inouye
Juan Q Saylors
Murillo B Inouye
Johnson F Tollner
Ivar J Gillian
Stacey L Figeroa
Mujtaba X Whobrey
Misaki W Kusko
Ashley Q Briddick
Juan B Malet
Ricardo M Butt
Kaitlin Q Campain
Darci S Ruta
Chavez C Albares
IdCountryDate
1000United Kingdom2026-07-28
1001Italy2026-07-27
1002Italy2026-07-30
1003Brazil2026-07-19
1004Brazil2026-07-15
1005United Kingdom2026-08-03
1006Italy2026-07-11
1007India2026-07-18
1008Germany2026-07-15
1009Argentina2026-07-10
1010Spain2026-07-25
1011United Kingdom2026-07-17
1012Australia2026-08-06
1013France2026-07-27
1014Australia2026-07-23
1015France2026-07-28
1016Australia2026-07-14
1017United Kingdom2026-07-15
1018Russia2026-07-26
1019Spain2026-07-13
1020Australia2026-07-21
1021Russia2026-07-18
1022France2026-08-02
1023Spain2026-07-31
1024Germany2026-07-25
1025Canada2026-08-03
1026Australia2026-07-31
1027Italy2026-08-04
1028Brazil2026-07-31
1029India2026-07-22
1030Russia2026-07-10
1031Italy2026-07-22
1032Brazil2026-07-31
1033Japan2026-07-18
1034Argentina2026-07-31
1035India2026-07-21
1036India2026-08-03
1037United Kingdom2026-07-12
1038Italy2026-07-25
1039Argentina2026-08-04
1040Argentina2026-07-14
1041United Kingdom2026-07-10
1042United Kingdom2026-07-12
1043Japan2026-08-02
1044Germany2026-07-13
1045Brazil2026-07-15
1046United Kingdom2026-07-20
1047Argentina2026-07-22
1048Spain2026-08-04
1049Germany2026-08-06

On-Demand Data

NameIdCountryDate
Maisha L Waycott1000Italy2026-07-26
Misaki W Ostrosky1001Brazil2026-07-11
Tony K Slusarski1002Spain2026-07-30
Ivar D Ferencz1003United Kingdom2026-07-08
Tony I Kolmetz1004United Kingdom2026-07-28
Deepesh I Caudy1005Canada2026-07-18
Aditya G Wieser1006Argentina2026-07-18
Kaitlin W Saylors1007Italy2026-08-03
Jones R Stockham1008France2026-07-09
Octavia W Stockham1009Germany2026-07-12
Misaki Y Garufi1010Japan2026-07-20
Ivar K Tollner1011Japan2026-07-15
Rodrigues R Inouye1012Australia2026-08-02
Adams W Rim1013Brazil2026-07-12
Greenwood D Vocelka1014Australia2026-07-12
Adams E Malet1015Japan2026-08-03
Wickens I Doe1016Australia2026-08-04
Stacey D Nicka1017Spain2026-08-01
Stacey N Dilliard1018Canada2026-07-27
Jeanfrancois Z Ostrosky1019United Kingdom2026-07-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aditya U FlosiIndiaBernardo Dominic QUALIFIED
Wickens Z ShinkoJapanAmy Elsner NEGOTIATION
Johnson O ButtCanadaIoni Bowcher PROPOSAL
Murillo G FigeroaFranceAmy Elsner PROPOSAL
Juan M RulapaughSpainAsiya Javayant NEW
Cody X AmigonGermanyStephen Shaw NEGOTIATION
Juan I PaprockiBrazilAsiya Javayant RENEWAL
Kadeem Y VenereFranceAmy Elsner QUALIFIED
Faith G GarufiUnited KingdomOnyama Limba UNQUALIFIED
Francesco H GauchoAustraliaAsiya Javayant NEGOTIATION
Ricardo X TollnerBrazilIoni Bowcher UNQUALIFIED
Jennifer Y MorascaArgentinaStephen Shaw NEW
Claire C DarakjyArgentinaIvan Magalhaes NEW
Smith F BologniaBrazilStephen Shaw NEW
Antonio W AlbaresCanadaOnyama Limba PROPOSAL
Maria J GillianUnited KingdomIoni Bowcher PROPOSAL
Clifford B MaletAustraliaStephen Shaw NEGOTIATION
Isabel Q MaletCanadaStephen Shaw NEGOTIATION
Rodrigues J DarakjyGermanyAsiya Javayant NEGOTIATION
Johnson L RoysterGermanyElwin Sharvill QUALIFIED
Darci G AlbaresIndiaBernardo Dominic NEW
Octavia P RulapaughJapanAnna Fali PROPOSAL
Julie F GlickJapanAsiya Javayant RENEWAL
Aditya G GlickIndiaIoni Bowcher QUALIFIED
Arvin H GlickBrazilAsiya Javayant UNQUALIFIED
Smith Z RimUnited KingdomElwin Sharvill NEGOTIATION
Ashley A ChuiBrazilOnyama Limba QUALIFIED
Salvatore C ButtBrazilIoni Bowcher UNQUALIFIED
Misaki S InouyeIndiaIoni Bowcher NEW
Sinclair C WaycottFranceAmy Elsner UNQUALIFIED
Claire P ChuiCanadaElwin Sharvill QUALIFIED
Adams S NickaItalyOnyama Limba QUALIFIED
Ricardo B OstroskyFranceBernardo Dominic UNQUALIFIED
Murillo V SergiIndiaBernardo Dominic UNQUALIFIED
Rodrigues C ChuiFranceElwin Sharvill NEW
Isabel L ChuiFranceStephen Shaw QUALIFIED
Aika I RoysterItalyIvan Magalhaes RENEWAL
Morrow A RimAustraliaAnna Fali NEGOTIATION
Kaitlin Q MarrierRussiaAmy Elsner PROPOSAL
Nicolas T CampainItalyAsiya Javayant 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>