user2061913
user2061913

Reputation: 920

Datatable not displaying any data but its fine using a pannel grid

i am currently using a pannel grid to display some data retrived from a database, this is working fine, the layout is not perfect but it displays all of the correct data, however i am wanting to use a datatable for looks more than anything, i have tried to use the outputText from the pannel grid but when i run the page it just says no data found, but on the same page the same code displays the data in the pannel grid

what am i doing wrong ?

this is the code for the working pannel grid

                    <!-- heading -->
                    <f:facet name="header">
                        User Details
                    </f:facet>

                    <h:outputText value="#{bundle.ViewUserdetailsLabel_id}"/>
                    <!-- adding in a small effect here that will fade a message when a user hovers over the id number or username -->
                    <h:outputLink id="id1" value="#">  
                        <h:outputText id="id" value="#{userdetailsController.selected.id}" title="#{bundle.ViewUserdetailsTitle_id}"/> 
                    </h:outputLink>                            
                    <p:tooltip for="id" value="This is your I.D. Number" showEffect="fade" hideEffect="fade" />


                    <h:outputText value="#{bundle.ViewUserdetailsLabel_username}"/>
                    <h:outputLink id="username1" value="#">  
                        <h:outputText id="username" value="#{userdetailsController.selected.username}" title="#{bundle.ViewUserdetailsTitle_username}"/>
                    </h:outputLink>                            
                    <p:tooltip for="username" value="Your registered username, this can be changed" showEffect="fade" hideEffect="fade" />
                </p:panelGrid>

and here is the not working datatable

                              <p:dataTable>
                <p:column   >
                    <f:facet name="header">
                        <h:outputText value="{bundle.ViewUserdetailsLabel_id}"/>
                    </f:facet>
                    <h:outputText value="{userdetailsController.selected.id}" /> 
                </p:column>
                <p:column headerText="username" >
                    <f:facet name="header">
                        <h:outputText value="{bundle.ListUserdetailsTitle_username}"/>
                    </f:facet>
                    <h:outputText value="{userdetailsController.selected.username}" />
                </p:column>
            </p:dataTable>

as you can see the outputText values are the same so it should work right ?

thanks

Upvotes: 1

Views: 859

Answers (1)

Kuba
Kuba

Reputation: 2089

If you happen to have only few hardcoded values to display in a form of a table, then you are better off using <h:panelGrid>. If you however have a list of objects that you want to iterate over and display them quickly then use <p:dataTable>.

Let's say we have a List of employees

 <p:dataTable var="employee" value="#{tableBean.employees}">  
    <p:column headerText="Name">  
        <h:outputText value="#{employee.name}" />  
    </p:column>  

    <p:column headerText="Age">  
        <h:outputText value="#{employee.age}" />  
    </p:column>  

    <p:column headerText="Sex">  
        <h:outputText value="#{employee.sex}" />  
    </p:column>  

</p:dataTable> 

then your table would look like this. var in this case is completely arbitrary, you could for instance call it 'fluffy' if you wanted. There are a lot of settings you can use with dataTable like pagination, export, sorting etc. But I suggest you familiarize yourself with Primefaces showcase

Upvotes: 1

Related Questions