Primefaces Datatable è dinamico di p:colonna

Voglio organizzare p:colonna in modo dinamico, cioè p:valore dell’intestazione della colonna dovrebbe essere venuto dal database e aumentare o diminuire in base al valore di database. si prega di suggerire a me ..

OriginaleL’autore saurabh | 2012-06-04

3 risposte

  1. 5

    Si dovrebbe usare il <p:columns , date un’occhiata alla vetrina DataTable – Dinamica Colonne

    qui un frammento di codice della vetrina

    <p:dataTable id="cars" var="car" value="#{tableBean.carsSmall}">                    
        <p:columns value="#{tableBean.columns}" var="column" columnIndexVar="colIndex" 
                    sortBy="#{car[column.property]}" filterBy="#{car[column.property]}">
            <f:facet name="header">
                #{column.header}
            </f:facet>
    
            #{car[column.property]}
        </p:columns>
    </p:dataTable>
    
    grazie. Ho risolto utilizzando p:colonne
    si può, si prega di guardare nella mia domanda stackoverflow.com/questions/20789832/…
    So che questa domanda è vecchia, ma mi puoi dire come visualizzare i dati se non so la colonna.valore della proprietà, cioè la proprietà è da database che verrà memorizzato in una lista e dipenderà no. di colonne

    OriginaleL’autore Daniel

  2. 4

    Spero che questo codice vi aiuterà a

    indice.xhtml

    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:p="http://primefaces.org/ui"
          xmlns:ui="http://java.sun.com/jsf/facelets"> 
        <h:head>
            <title>Dynamic DataTable columns</title>
        </h:head>
        <h:body>
            <h:form>
                 <p:dataTable id="cars" var="car" value="#{GenerateTable.test}">                      
                      <p:columns value="#{GenerateTable.columns}" var="column" columnIndexVar="colIndex">  
                             <f:facet name="header">  
                                   #{column}  
                            </f:facet>  
                            <h:outputText value="#{car[colIndex]}"/>
                       </p:columns> 
                  </p:dataTable>     
            </h:form>
         </h:body>
    </html>
    

    GenerateTable.java

    import java.sql.*;
    import java.util.*;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.RequestScoped;
    @ManagedBean(name="GenerateTable")
    @RequestScoped
    public class generateTable 
    {
        public static List<String> columns=new ArrayList<String>();
        public static ArrayList test=new ArrayList();   
        /*getter and setter for above variables*/
        public List<String> getColumns()
        {
            return columns;
        }
        public void setColumns(List<String> columns)
        {
            this.columns=columns;
        }
        public ArrayList getTest()
        {
            return test;
        }
        public void setTest(ArrayList test)
        {
            this.test=test;
        }
        /*end of getter and setter*/
        public generateTable()
        {
            dynamicColumns();
        }
         public void dynamicColumns()
        {
           test=new ArrayList<String>();
           columns=new ArrayList<String>();      
    
           try
           {
               Class.forName("com.mysql.jdbc.Driver");
               Connection con=DriverManager.getConnection("jdbc:mysql://localhost/db_test","root","");
               Statement stmt=con.createStatement();
               ResultSet result=stmt.executeQuery("select * from myTable"); 
               ResultSetMetaData md = result.getMetaData();
           int columnCount = md.getColumnCount();
               for(int i=1; i<=columnCount; i++)                            
            columns.add(md.getColumnName(i));    //adding column name dynamicly                 
               while(result.next())
               {
                  ArrayList child=new ArrayList();
                  for(int i=1;i<=columnCount;i++)
                      child.add(result.getString(i)); //denpends on column add the data
                  test.add(child);              
               }
               result.close();
               con.close();
           }
           catch(Exception ex)
           {
               System.out.println(""+ex);
           }
        }
    }
    

    Grazie

    OriginaleL’autore Praveenkumar_V

  3. 1

    Se non sai come numero di colonne che si desidera visualizzare nel datatable, è possibile utilizzare:

    List <Object[]> resultsValues = service.getResultsValues(...);
    
    List <MyHeader> resultsHeader = service.getResultsHeader(...);
    
    • ogni Oggetto[] rappresenta una riga.
    • ogni MyHeader è un Object che rappresenta l’intestazione di una colonna

    Qui è il datatable:

    <p:dataTable id="myTable" var="lineResult" 
                value="#{yourManagedBean.resultsValues}" paginatorAlwaysVisible="false"
                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
                paginator="true" rows="10" rowKey="#{lineResult}">
                <p:columns value="#{yourManagedBean.resultsHeader}" var="column"  columnIndexVar="i" >
                    <f:facet name="header">
                        <h:outputText title="#{column.description}" value= "#{column.label}" />
                    </f:facet>
                    <h:outputText value= "#{lineResult[i]}" />
                </p:columns>
    </p:dataTable>
    

    OriginaleL’autore Tchapu

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *