Locale

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Bangla
Bosnian
Czech
Greek
Estonian
Persian
Finnish
Danish
Hindi
Indonesian
Icelandic
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
Uzbek
Vietnamese
Chinese
Chinese

Input Style

Free Themes

Built-in component themes created by the PrimeFaces Theme Designer.

Saga Saga
Vela Vela
Arya Arya

Legacy Free Themes

Luna Amber Luna Amber
Luna Blue Luna Blue
Luna Green Luna Green
Luna Pink Luna Pink
Nova Nova
Nova Nova Alt
Nova Nova Accent

DataTable Scroll

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

Vertical
NameCountryRepresentativeStatus
Darci PoquetteGermanyIoni Bowcher RENEWAL
Smith GlickBrazilElwin Sharvill RENEWAL
Alejandro PerinBrazilAnna Fali PROPOSAL
Tony FollerAustraliaBernardo Dominic QUALIFIED
Aditya KuskoAustraliaOnyama Limba RENEWAL
Ashley DoeItalyIoni Bowcher NEW
Isabel BowleyArgentinaIvan Magalhaes NEW
Deepesh ChuiIndiaAsiya Javayant RENEWAL
Aruna FigeroaRussiaElwin Sharvill NEGOTIATION
Faith GillianUnited KingdomStephen Shaw QUALIFIED
Alejandro PerinAustraliaAnna Fali PROPOSAL
Claire TollnerIndiaXuxue Feng NEGOTIATION
Aditya KuskoSpainOnyama Limba QUALIFIED
Costa DilliardCanadaAmy Elsner QUALIFIED
Ivar PaprockiSpainAsiya Javayant NEGOTIATION
Izzy GarufiRussiaIoni Bowcher QUALIFIED
Costa DilliardFranceAmy Elsner QUALIFIED
Maria MarrierArgentinaStephen Shaw QUALIFIED
Jennifer AmigonFranceElwin Sharvill PROPOSAL
Kaitlin OstroskyRussiaIvan Magalhaes UNQUALIFIED
Misaki RoysterCanadaOnyama Limba NEGOTIATION
Munro FerenczGermanyIoni Bowcher NEW
Sinclair WaycottItalyElwin Sharvill RENEWAL
Octavia MaletBrazilBernardo Dominic UNQUALIFIED
Morrow RutaAustraliaElwin Sharvill RENEWAL
Claire TollnerGermanyIoni Bowcher UNQUALIFIED
Francesco ShinkoIndiaElwin Sharvill UNQUALIFIED
Ivar PaprockiSpainOnyama Limba NEW
Octavia MaletBrazilIvan Magalhaes UNQUALIFIED
Salvatore StockhamAustraliaAmy Elsner QUALIFIED
Nicolas IturbideSpainOnyama Limba UNQUALIFIED
Ivar PaprockiFranceStephen Shaw PROPOSAL
Jennifer AmigonUnited KingdomIvan Magalhaes NEW
Jennifer AmigonUnited KingdomAmy Elsner NEGOTIATION
Nicolas IturbideGermanyIvan Magalhaes QUALIFIED
Emily WhobreySpainXuxue Feng NEGOTIATION
Kadeem FlosiRussiaAsiya Javayant QUALIFIED
Kadeem FlosiFranceStephen Shaw PROPOSAL
Octavia MaletUnited KingdomIoni Bowcher NEW
Leon OldroydAustraliaAmy Elsner NEGOTIATION
Izzy GarufiAustraliaIvan Magalhaes NEW
Maria MarrierCanadaXuxue Feng UNQUALIFIED
Costa DilliardItalyIoni Bowcher NEGOTIATION
Silvio SlusarskiUnited KingdomAmy Elsner NEGOTIATION
Costa DilliardCanadaIoni Bowcher NEGOTIATION
Ivar PaprockiArgentinaStephen Shaw NEW
Emily WhobreyIndiaAmy Elsner PROPOSAL
Claire TollnerIndiaStephen Shaw PROPOSAL
Darci PoquetteBrazilXuxue Feng QUALIFIED
Kaitlin OstroskyJapanOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Alejandro PerinRussiaAmy Elsner RENEWAL
Jefferson SchemmerUnited KingdomBernardo Dominic NEW
Arvin AlbaresFranceStephen Shaw RENEWAL
Francesco ShinkoAustraliaAnna Fali UNQUALIFIED
Ivar PaprockiGermanyBernardo Dominic RENEWAL
Adams MorascaCanadaAmy Elsner NEGOTIATION
Maria MarrierRussiaAnna Fali RENEWAL
Smith GlickGermanyAsiya Javayant NEW
Jones VocelkaItalyAsiya Javayant UNQUALIFIED
Jones VocelkaAustraliaElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson SchemmerGermany2026-06-17Buckley Miller Wright NEGOTIATION9Onyama Limba
1001Cody SaylorsUnited Kingdom2026-06-15Chapman, Ross E Esq PROPOSAL0Bernardo Dominic
1002Rodrigues CampainCanada2026-05-30Benton, John B Jr PROPOSAL96Ivan Magalhaes
1003Stacey MacleadJapan2026-06-05Chanay, Jeffrey A Esq NEGOTIATION74Ivan Magalhaes
1004Chavez BriddickBrazil2026-05-30Rousseaux, Michael Esq NEW74Elwin Sharvill
1005Salvatore StockhamItaly2026-06-02Chemel, James L Cpa NEW81Onyama Limba
1006Jones VocelkaIndia2026-06-18Benton, John B Jr NEGOTIATION61Ivan Magalhaes
1007Deepesh ChuiItaly2026-06-07Buckley Miller Wright QUALIFIED16Bernardo Dominic
1008Leon OldroydArgentina2026-05-25Dorl, James J Esq NEGOTIATION45Anna Fali
1009Stacey MacleadIndia2026-05-25Rangoni Of Florence PROPOSAL2Onyama Limba
1010Leja CaldareraGermany2026-06-08Printing Dimensions RENEWAL0Ioni Bowcher
1011Chavez BriddickIndia2026-06-14Chanay, Jeffrey A Esq QUALIFIED34Ivan Magalhaes
1012Nicolas IturbideJapan2026-06-06Rousseaux, Michael Esq UNQUALIFIED36Amy Elsner
1013Morrow RutaAustralia2026-05-30Rangoni Of Florence UNQUALIFIED51Bernardo Dominic
1014Emily WhobreyUnited Kingdom2026-06-05Feltz Printing Service NEW94Asiya Javayant
1015Aika InouyeItaly2026-05-31Rangoni Of Florence PROPOSAL77Stephen Shaw
1016Aruna FigeroaUnited Kingdom2026-06-04Feltz Printing Service UNQUALIFIED39Amy Elsner
1017Rodrigues CampainCanada2026-06-10Rangoni Of Florence NEW34Ioni Bowcher
1018Ashley DoeArgentina2026-06-01Rangoni Of Florence PROPOSAL2Onyama Limba
1019David DarakjyAustralia2026-05-31King, Christopher A Esq PROPOSAL50Stephen Shaw
1020Faith GillianJapan2026-05-30Morlong Associates RENEWAL14Ivan Magalhaes
1021Ricardo GauchoFrance2026-06-05Buckley Miller Wright PROPOSAL8Ioni Bowcher
1022Arvin AlbaresUnited Kingdom2026-06-16Truhlar And Truhlar Attys PROPOSAL70Bernardo Dominic
1023Julie StensethAustralia2026-06-06Feltz Printing Service UNQUALIFIED89Asiya Javayant
1024Juan WieserRussia2026-06-18Rousseaux, Michael Esq RENEWAL79Stephen Shaw
1025David DarakjyFrance2026-06-15Chanay, Jeffrey A Esq NEW95Stephen Shaw
1026Salvatore StockhamItaly2026-05-30Morlong Associates UNQUALIFIED46Bernardo Dominic
1027Julie StensethItaly2026-06-19Chemel, James L Cpa UNQUALIFIED50Bernardo Dominic
1028Jefferson SchemmerUnited Kingdom2026-06-17Truhlar And Truhlar Attys QUALIFIED39Bernardo Dominic
1029Morrow RutaCanada2026-06-21Feltz Printing Service UNQUALIFIED1Ioni Bowcher
1030Smith GlickFrance2026-05-31Commercial Press RENEWAL43Ioni Bowcher
1031Mujtaba NickaSpain2026-05-27Chemel, James L Cpa NEW63Elwin Sharvill
1032Alejandro PerinRussia2026-06-17Rousseaux, Michael Esq RENEWAL89Stephen Shaw
1033Chavez BriddickBrazil2026-06-20Feiner Bros RENEWAL77Elwin Sharvill
1034Emily WhobreyCanada2026-05-31King, Christopher A Esq RENEWAL43Onyama Limba
1035Darci PoquetteUnited Kingdom2026-06-17Feiner Bros RENEWAL91Ioni Bowcher
1036Rodrigues CampainIndia2026-06-04Chapman, Ross E Esq UNQUALIFIED41Asiya Javayant
1037Jones VocelkaIndia2026-06-18Chapman, Ross E Esq NEW54Ioni Bowcher
1038Ivar PaprockiFrance2026-06-12Truhlar And Truhlar Attys NEGOTIATION34Elwin Sharvill
1039Maria MarrierArgentina2026-06-14Dorl, James J Esq PROPOSAL47Bernardo Dominic
1040Tony FollerFrance2026-06-16Truhlar And Truhlar Attys NEW95Anna Fali
1041Francesco ShinkoSpain2026-05-31Commercial Press NEW81Ioni Bowcher
1042Francesco ShinkoIndia2026-06-03Commercial Press UNQUALIFIED88Onyama Limba
1043Costa DilliardCanada2026-05-31Commercial Press NEGOTIATION69Amy Elsner
1044Tony FollerAustralia2026-06-14Printing Dimensions UNQUALIFIED97Asiya Javayant
1045Jennifer AmigonBrazil2026-05-30Rousseaux, Michael Esq QUALIFIED25Ivan Magalhaes
1046Costa DilliardArgentina2026-06-06Chemel, James L Cpa RENEWAL73Bernardo Dominic
1047Greenwood BologniaJapan2026-06-08Morlong Associates RENEWAL18Asiya Javayant
1048Maisha RulapaughFrance2026-06-07Morlong Associates NEGOTIATION90Bernardo Dominic
1049Alejandro PerinBrazil2026-05-28Feiner Bros UNQUALIFIED96Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Leon OldroydIndiaElwin Sharvill QUALIFIED
Ashley DoeBrazilAsiya Javayant UNQUALIFIED
James ButtCanadaStephen Shaw UNQUALIFIED
Aditya KuskoCanadaIoni Bowcher PROPOSAL
Claire TollnerCanadaOnyama Limba PROPOSAL
Juan WieserRussiaAsiya Javayant QUALIFIED
Wickens NestleFranceElwin Sharvill RENEWAL
Misaki RoysterAustraliaXuxue Feng NEW
Johnson SergiCanadaStephen Shaw QUALIFIED
Deepesh ChuiJapanOnyama Limba NEW
Aruna FigeroaBrazilAnna Fali NEGOTIATION
Munro FerenczAustraliaIoni Bowcher QUALIFIED
Alejandro PerinCanadaAnna Fali NEGOTIATION
Isabel BowleyArgentinaIvan Magalhaes UNQUALIFIED
Rodrigues CampainRussiaStephen Shaw NEGOTIATION
Chavez BriddickAustraliaIvan Magalhaes NEW
Rodrigues CampainSpainAmy Elsner UNQUALIFIED
Mayumi KolmetzItalyOnyama Limba UNQUALIFIED
Ricardo GauchoCanadaBernardo Dominic UNQUALIFIED
David DarakjyJapanAnna Fali UNQUALIFIED
Nicolas IturbideSpainElwin Sharvill QUALIFIED
Kadeem FlosiIndiaXuxue Feng NEGOTIATION
Arvin AlbaresArgentinaIvan Magalhaes NEW
Murillo MaletArgentinaElwin Sharvill NEGOTIATION
Jones VocelkaFranceXuxue Feng UNQUALIFIED
Jennifer AmigonIndiaElwin Sharvill UNQUALIFIED
Munro FerenczUnited KingdomXuxue Feng RENEWAL
Julie StensethRussiaAmy Elsner RENEWAL
Mujtaba NickaAustraliaAnna Fali RENEWAL
Francesco ShinkoBrazilOnyama Limba PROPOSAL
Costa DilliardAustraliaAnna Fali UNQUALIFIED
Stacey MacleadArgentinaElwin Sharvill NEGOTIATION
Tony FollerBrazilOnyama Limba QUALIFIED
Kadeem FlosiAustraliaStephen Shaw RENEWAL
Chavez BriddickItalyIoni Bowcher NEGOTIATION
Wickens NestleItalyIvan Magalhaes NEGOTIATION
Johnson SergiIndiaBernardo Dominic NEGOTIATION
Leja CaldareraIndiaBernardo Dominic QUALIFIED
Jennifer AmigonSpainIvan Magalhaes RENEWAL
Darci PoquetteSpainIvan Magalhaes UNQUALIFIED
Julie StensethGermanyBernardo Dominic RENEWAL
Emily WhobreyFranceAnna Fali QUALIFIED
Adams MorascaBrazilIoni Bowcher NEW
Tony FollerRussiaXuxue Feng NEW
Isabel BowleyJapanStephen Shaw UNQUALIFIED
Morrow RutaArgentinaIoni Bowcher PROPOSAL
Chavez BriddickRussiaAmy Elsner RENEWAL
Silvio SlusarskiGermanyXuxue Feng NEW
Francesco ShinkoIndiaIoni Bowcher UNQUALIFIED
Wickens NestleGermanyIvan Magalhaes NEGOTIATION
Frozen Columns
Name
Tony Foller
Ashley Doe
Isabel Bowley
Ashley Doe
Julie Stenseth
Adams Morasca
Murillo Malet
Misaki Royster
Silvio Slusarski
Sinclair Waycott
Adams Morasca
Darci Poquette
Misaki Royster
Sinclair Waycott
Antonio Caudy
Alejandro Perin
Jennifer Amigon
Ashley Doe
Morrow Ruta
Johnson Sergi
Stacey Maclead
Tony Foller
Izzy Garufi
Adams Morasca
Kaitlin Ostrosky
Faith Gillian
Rodrigues Campain
Jones Vocelka
Greenwood Bolognia
Julie Stenseth
Munro Ferencz
Munro Ferencz
Aditya Kusko
Smith Glick
Adams Morasca
Ricardo Gaucho
Cody Saylors
Claire Tollner
Darci Poquette
Isabel Bowley
Juan Wieser
Sinclair Waycott
Leja Caldarera
Leon Oldroyd
Misaki Royster
Jefferson Schemmer
Alejandro Perin
Stacey Maclead
Darci Poquette
Octavia Malet
IdCountryDate
1000Italy2026-05-29
1001India2026-05-27
1002Spain2026-06-15
1003United Kingdom2026-06-22
1004Germany2026-06-13
1005Argentina2026-06-22
1006Brazil2026-06-03
1007Japan2026-05-27
1008Japan2026-06-21
1009Japan2026-06-07
1010Canada2026-06-03
1011Japan2026-06-01
1012Argentina2026-06-02
1013Russia2026-06-08
1014Spain2026-06-12
1015Germany2026-05-29
1016France2026-05-24
1017Germany2026-06-17
1018France2026-06-13
1019Argentina2026-06-02
1020India2026-06-01
1021United Kingdom2026-06-12
1022Brazil2026-05-31
1023Argentina2026-06-13
1024Italy2026-05-29
1025Brazil2026-06-22
1026United Kingdom2026-05-30
1027Italy2026-05-25
1028Spain2026-06-03
1029Canada2026-05-25
1030Canada2026-06-14
1031Brazil2026-05-31
1032Brazil2026-06-05
1033Russia2026-06-16
1034Australia2026-06-19
1035Canada2026-05-30
1036India2026-05-24
1037Germany2026-06-06
1038Australia2026-06-16
1039Brazil2026-05-26
1040India2026-06-02
1041Italy2026-05-25
1042Japan2026-06-18
1043United Kingdom2026-06-10
1044India2026-06-09
1045India2026-05-29
1046France2026-05-29
1047Japan2026-05-25
1048Spain2026-05-30
1049Japan2026-05-28

On-Demand Data

NameIdCountryDate
Nicolas Iturbide1000Spain2026-05-30
Kadeem Flosi1001Argentina2026-06-11
Costa Dilliard1002Australia2026-06-01
Arvin Albares1003Germany2026-06-18
Mayumi Kolmetz1004Spain2026-06-13
Faith Gillian1005Brazil2026-06-10
Antonio Caudy1006United Kingdom2026-05-27
Rodrigues Campain1007Argentina2026-06-11
Maria Marrier1008Italy2026-05-27
Smith Glick1009Japan2026-06-19
Maria Marrier1010France2026-06-18
Mayumi Kolmetz1011India2026-06-14
James Butt1012Spain2026-06-01
Leja Caldarera1013India2026-06-14
Wickens Nestle1014Spain2026-06-16
Isabel Bowley1015France2026-06-14
Juan Wieser1016United Kingdom2026-06-18
Greenwood Bolognia1017Germany2026-05-26
Kadeem Flosi1018Russia2026-06-15
Costa Dilliard1019Japan2026-05-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams MorascaFranceIvan Magalhaes PROPOSAL
Costa DilliardArgentinaBernardo Dominic RENEWAL
Rodrigues CampainGermanyAsiya Javayant NEGOTIATION
Stacey MacleadItalyXuxue Feng UNQUALIFIED
David DarakjyItalyAnna Fali NEW
Ivar PaprockiJapanAnna Fali UNQUALIFIED
Aditya KuskoArgentinaElwin Sharvill QUALIFIED
Morrow RutaSpainAmy Elsner UNQUALIFIED
Ricardo GauchoCanadaBernardo Dominic PROPOSAL
Nicolas IturbideBrazilOnyama Limba NEW
Nicolas IturbideArgentinaElwin Sharvill NEW
David DarakjyItalyXuxue Feng UNQUALIFIED
Ricardo GauchoFranceIvan Magalhaes NEGOTIATION
Arvin AlbaresItalyAnna Fali QUALIFIED
Darci PoquetteUnited KingdomStephen Shaw NEW
James ButtItalyBernardo Dominic RENEWAL
Kadeem FlosiItalyAmy Elsner RENEWAL
Morrow RutaAustraliaAmy Elsner UNQUALIFIED
Kaitlin OstroskyCanadaAnna Fali NEGOTIATION
Isabel BowleyArgentinaIoni Bowcher PROPOSAL
Kadeem FlosiAustraliaIoni Bowcher UNQUALIFIED
Alejandro PerinCanadaStephen Shaw NEW
Wickens NestleGermanyAsiya Javayant NEGOTIATION
Deepesh ChuiJapanAmy Elsner NEW
Greenwood BologniaUnited KingdomXuxue Feng PROPOSAL
Isabel BowleyRussiaIvan Magalhaes PROPOSAL
Emily WhobreyRussiaBernardo Dominic UNQUALIFIED
Greenwood BologniaCanadaOnyama Limba PROPOSAL
Juan WieserGermanyBernardo Dominic QUALIFIED
Salvatore StockhamArgentinaStephen Shaw RENEWAL
Chavez BriddickGermanyOnyama Limba NEW
Leon OldroydFranceElwin Sharvill QUALIFIED
Arvin AlbaresCanadaIoni Bowcher PROPOSAL
Rodrigues CampainBrazilBernardo Dominic NEW
Smith GlickSpainAmy Elsner PROPOSAL
Morrow RutaUnited KingdomAsiya Javayant RENEWAL
Jefferson SchemmerAustraliaBernardo Dominic NEW
Nicolas IturbideArgentinaBernardo Dominic RENEWAL
Ivar PaprockiFranceStephen Shaw RENEWAL
Jefferson SchemmerRussiaAsiya Javayant UNQUALIFIED

<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.statusName}">#{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.statusName}">#{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.statusName}">#{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.statusName}">#{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.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

</h:form>