<P:PanelGrid Dinamico

Olá amigos, alguem pode me ajudar nesse trem.

Preciso criar novas linhas e colunas dinamicamente conforme alguns parametros, tem como fazer isso via MB?

E vou precisar utilizar colspan e rowspan tambem ok.

Eu vi que na p:DataTable que tem como, mas não sei como fazer no PanelGrid.

Desde já agradeço qualquer ajuda.

Abraços

Jomello

Esta quase resolvido, me falta saber como criar o facet dentro do MB, tentei algo assim e não deu certo apenas o inicio que se refere ao facet, o resto pode acreditar que funciona na boa ok galera. :slight_smile:

Vejam que nas variaveis Teste e teste2, teoricamente funciona, tanto que não dá erro, mas simplesmente não recria o cabecalho, me falta saber como criar o componente FACET ai fechou e garanto que quando conseguir vou mandar para todos ok amigos :stuck_out_tongue:

[b]Aqui vem a grande pergunta, até onde pude perceber criar um componente JSF basta declarar como UIComponent e/ou PanelGrid (por exemplo, se for do Primefaces), até ai tudo bem, mas como faço para dizer qual componente eu quero criar se for um componente do JSF?

E me corrijam se eu estiver errado, o <f:facet nada mais é que um componente do JSF certo?[/b]

Haaaa… Quanto ao resto fiquem tranquilos que funciona, claro que criei um <p:panelGrid dentro da pagina ok, segue o código:

Quando voces lerem o codigo, aqui é 3 tabelas: pai + filho + filho do filho e preciso saber os tais rowspan e colspan de cada um ok.

PAGIA XHTML

<p:scrollPanel id="nativeScroll" style="height:650px;">
                                        <p:panelGrid id="gridDiagnostico" style="width: 100%;">  
                                            <f:facet name="header">  
                                                <p:row>  
                                                    <p:column colspan="8">DIAGNÓSTICO</p:column>  
                                                </p:row>  
                                                <p:row>  
                                                    <p:column colspan="3">DEPARTAMENTO</p:column>  
                                                    <p:column>CONTRATADO</p:column>  
                                                    <p:column>APROVAÇÃO</p:column>  
                                                    <p:column>TERCEIROS</p:column>
                                                    <p:column>APROVAÇÃO</p:column>
                                                    <p:column>NÃO SE APLICA</p:column>
                                                </p:row>  
                                            </f:facet>
                                        </p:panelGrid> 
                                    </p:scrollPanel>

MANAGEDBEAN

public void criaComponente() {
        try {
            ScrollPanel scrollPanel = (ScrollPanel) FacesContext.getCurrentInstance().getViewRoot().findComponent(":frmEmpreendimento:nativeScroll");
            PanelGrid grid = (PanelGrid) FacesContext.getCurrentInstance().getViewRoot().findComponent(":frmEmpreendimento:gridDiagnostico");
            Map<String, UIComponent> teste = grid.getFacets();
            
            grid = new PanelGrid();
            UIComponent teste2 = teste.get("header");
            grid.getChildren().add(teste2);
            
            String cSql = "select count(diagnostico_Nivel1.id_diagnostico_nivel1) as n_id "
                    + "from diagnostico_Nivel1 left join diagnostico_Nivel2 on diagnostico_Nivel2.id_diagnostico_nivel1 = diagnostico_Nivel1.id_diagnostico_nivel1 "
                    + "left join diagnostico_Nivel3 on diagnostico_Nivel3.id_diagnostico_nivel2 = diagnostico_Nivel2.id_diagnostico_nivel2 "
                    + "group by diagnostico_Nivel1.id_diagnostico_nivel1 ";

            this.selectedGetIdMaxList = this.getIdMaxJpa.getNativeSQL(cSql);


            Row row1 = new Row();
            Column col1 = new Column();
            InputMask inputMask1 = new InputMask();
            HtmlOutputText otexto = new HtmlOutputText();

            int nSizeNivel1;
            int nSizeNivel2;
            int nSizeNivel3;
            int nContador = 0;

            // NIVEL 1
            for (int i = 0; i < this.selectedEmpreendimentoLote.getProcessoDiagnosticoNivel1List().size(); i++) {
                this.selectedGetIdMax = this.selectedGetIdMaxList.get(i); 
                nSizeNivel1 = this.selectedGetIdMax.getNId();
                this.selectedProcessoDiagnosticoNivel1 = this.selectedEmpreendimentoLote.getProcessoDiagnosticoNivel1List().get(i);
                row1 = new Row();
                row1.setId("row" + ++nContador + i);
                col1 = new Column();

                if (this.selectedProcessoDiagnosticoNivel1.getProcessoDiagnosticoNivel2List() != null) {
                    nSizeNivel2 = this.selectedProcessoDiagnosticoNivel1.getProcessoDiagnosticoNivel2List().size();
                } else {
                    nSizeNivel2 = 0;
                }

                if (nSizeNivel2 == 0) {
                    otexto = new HtmlOutputText();
                    otexto.setValue(this.selectedProcessoDiagnosticoNivel1.getDscDiagnosticoNivel1());
                    otexto.setId("inTexto1" + ++nContador + i);
                    col1.getChildren().add(otexto);
                    col1.setColspan(3);
                    col1.setId("col1" + ++nContador + i);
                    row1.getChildren().add(col1);

                    col1 = new Column();
                    inputMask1 = new InputMask();
                    inputMask1.setMask("a*");
                    inputMask1.setValue(" ");
                    inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
                    inputMask1.setId("inTexto1" + ++nContador + i);
                    col1.getChildren().add(inputMask1);
                    col1.setId("col1b" + ++nContador + i);
                    row1.getChildren().add(col1);

                    col1 = new Column();
                    inputMask1 = new InputMask();
                    inputMask1.setMask("99/99/9999");
                    inputMask1.setValue(this.selectedProcessoDiagnosticoNivel1.getDatAprovacao());
                    inputMask1.setId("inDat1" + ++nContador + i);
                    col1.getChildren().add(inputMask1);
                    col1.setId("col1c" + ++nContador + i);
                    row1.getChildren().add(col1);

                    col1 = new Column();
                    inputMask1 = new InputMask();
                    inputMask1.setMask("a*");
                    inputMask1.setValue("-");
                    inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
                    inputMask1.setId("inTexto1" + ++nContador + i);
                    col1.getChildren().add(inputMask1);
                    col1.setId("col1b" + ++nContador + i);
                    row1.getChildren().add(col1);

                    col1 = new Column();
                    inputMask1 = new InputMask();
                    inputMask1.setMask("99/99/9999");
                    inputMask1.setValue(this.selectedProcessoDiagnosticoNivel1.getDatTerceiroAprovacao());
                    inputMask1.setId("inDat1b" + ++nContador + i);
                    col1.getChildren().add(inputMask1);
                    col1.setId("col1e" + ++nContador + i);
                    row1.getChildren().add(col1);

                    col1 = new Column();
                    inputMask1 = new InputMask();
                    inputMask1.setMask("a*");
                    inputMask1.setValue("-");
                    inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
                    inputMask1.setId("inTexto1" + ++nContador + i);
                    col1.getChildren().add(inputMask1);
                    col1.setId("col1b" + ++nContador + i);
                    row1.getChildren().add(col1);
                } else {
                    otexto = new HtmlOutputText();
                    otexto.setValue(this.selectedProcessoDiagnosticoNivel1.getDscDiagnosticoNivel1());
                    otexto.setId("inTexto1" + ++nContador + i);
                    col1.getChildren().add(otexto);
                    col1.setRowspan(nSizeNivel1);
                    col1.setId("col1" + ++nContador + i);
                    row1.getChildren().add(col1);
                }

                // NIVEL 2
                if (this.selectedProcessoDiagnosticoNivel1.getProcessoDiagnosticoNivel2List() != null) {
                    for (int j = 0; j < this.selectedProcessoDiagnosticoNivel1.getProcessoDiagnosticoNivel2List().size(); j++) {
                        this.selectedProcessoDiagnosticoNivel2 = this.selectedProcessoDiagnosticoNivel1.getProcessoDiagnosticoNivel2List().get(j);

                        if (this.selectedProcessoDiagnosticoNivel2.getProcessoDiagnosticoNivel3List() != null) {
                            nSizeNivel3 = this.selectedProcessoDiagnosticoNivel2.getProcessoDiagnosticoNivel3List().size();
                        } else {
                            nSizeNivel3 = 0;
                        }

                        if (j > 0) {
                            grid.getChildren().add(row1);

                            row1 = new Row();
                            row1.setId("row" + ++nContador + i);
                            col1 = new Column();
                        }

                        if (nSizeNivel3 > 0) {
                            col1 = new Column();
                            otexto = new HtmlOutputText();
                            otexto.setValue(this.selectedProcessoDiagnosticoNivel2.getDscDiagnosticoNivel2());
                            otexto.setId("inTexto2" + ++nContador + j);
                            col1.setRowspan(nSizeNivel3);
                            row1.getChildren().add(col1);

                            // NIVEL 3
                            if (this.selectedProcessoDiagnosticoNivel2.getProcessoDiagnosticoNivel3List() != null) {
                                for (int k = 0; k < this.selectedProcessoDiagnosticoNivel2.getProcessoDiagnosticoNivel3List().size(); k++) {
                                    this.selectedProcessoDiagnosticoNivel3 = this.selectedProcessoDiagnosticoNivel2.getProcessoDiagnosticoNivel3List().get(k);

                                    if (k > 0) {
                                        grid.getChildren().add(row1);

                                        row1 = new Row();
                                        row1.setId("row" + ++nContador + i);
                                        col1 = new Column();
                                    }

                                    col1 = new Column();
                                    otexto = new HtmlOutputText();
                                    otexto.setValue(this.selectedProcessoDiagnosticoNivel3.getDscDiagnosticoNivel3());
                                    otexto.setId("inTexto3" + ++nContador + k);
                                    col1.getChildren().add(otexto);
                                    col1.setId("col3a" + ++nContador + k);
                                    row1.getChildren().add(col1);

                                    col1 = new Column();
                                    inputMask1 = new InputMask();
                                    inputMask1.setMask("a*");
                                    inputMask1.setValue("-");
                                    inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
                                    inputMask1.setId("inTexto1" + ++nContador + k);
                                    col1.getChildren().add(inputMask1);
                                    col1.setId("col1b" + ++nContador + k);
                                    row1.getChildren().add(col1);

                                    col1 = new Column();
                                    inputMask1 = new InputMask();
                                    inputMask1.setMask("99/99/9999");
                                    inputMask1.setValue(this.selectedProcessoDiagnosticoNivel3.getDatAprovacao());
                                    inputMask1.setId("inDat3" + ++nContador + k);
                                    col1.getChildren().add(inputMask1);
                                    col1.setId("col3c" + ++nContador + k);
                                    row1.getChildren().add(col1);

                                    col1 = new Column();
                                    inputMask1 = new InputMask();
                                    inputMask1.setMask("a*");
                                    inputMask1.setValue("-");
                                    inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
                                    inputMask1.setId("inTexto1" + ++nContador + k);
                                    col1.getChildren().add(inputMask1);
                                    col1.setId("col1b" + ++nContador + k);
                                    row1.getChildren().add(col1);

                                    col1 = new Column();
                                    inputMask1 = new InputMask();
                                    inputMask1.setMask("99/99/9999");
                                    inputMask1.setValue(this.selectedProcessoDiagnosticoNivel3.getDatTerceiroAprovacao());
                                    inputMask1.setId("inDat3b" + ++nContador + k);
                                    col1.getChildren().add(inputMask1);
                                    col1.setId("col3e" + ++nContador + k);
                                    row1.getChildren().add(col1);

                                    col1 = new Column();
                                    inputMask1 = new InputMask();
                                    inputMask1.setMask("a*");
                                    inputMask1.setValue("-");
                                    inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
                                    inputMask1.setId("inTexto1" + ++nContador + k);
                                    col1.getChildren().add(inputMask1);
                                    col1.setId("col1b" + ++nContador + k);
                                    row1.getChildren().add(col1);
                                }
                            }
                        } else {
                            // NIVEL 2 SEM NIVEL 3
                            col1.setColspan(2);
                            col1.getChildren().add(otexto);
                            col1.setId("col1b" + ++nContador + j);
                            row1.getChildren().add(col1);

                            col1 = new Column();
                            inputMask1 = new InputMask();
                            inputMask1.setMask("a*");
                            inputMask1.setValue("-");
                            inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
                            inputMask1.setId("inTexto1" + ++nContador + j);
                            col1.getChildren().add(inputMask1);
                            col1.setId("col1b" + ++nContador + j);
                            row1.getChildren().add(col1);

                            col1 = new Column();
                            inputMask1 = new InputMask();
                            inputMask1.setMask("99/99/9999");
                            inputMask1.setValue(this.selectedProcessoDiagnosticoNivel2.getDatAprovacao());
                            inputMask1.setId("inDat2" + ++nContador + j);
                            col1.getChildren().add(inputMask1);
                            col1.setId("col1b" + ++nContador + j);
                            row1.getChildren().add(col1);

                            col1 = new Column();
                            inputMask1 = new InputMask();
                            inputMask1.setMask("a*");
                            inputMask1.setValue("-");
                            inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
                            inputMask1.setId("inTexto1" + ++nContador + j);
                            col1.getChildren().add(inputMask1);
                            col1.setId("col1b" + ++nContador + j);
                            row1.getChildren().add(col1);

                            col1 = new Column();
                            inputMask1 = new InputMask();
                            inputMask1.setMask("99/99/9999");
                            inputMask1.setValue(this.selectedProcessoDiagnosticoNivel2.getDatTerceiroAprovacao());
                            inputMask1.setId("inDat2b" + ++nContador + j);
                            col1.getChildren().add(inputMask1);
                            col1.setId("col1b" + ++nContador + j);
                            row1.getChildren().add(col1);

                            col1 = new Column();
                            inputMask1 = new InputMask();
                            inputMask1.setMask("a*");
                            inputMask1.setValue("-");
                            inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
                            inputMask1.setId("inTexto1" + ++nContador + j);
                            col1.getChildren().add(inputMask1);
                            col1.setId("col1b" + ++nContador + j);
                            row1.getChildren().add(col1);
                        }
                    }
                }
                grid.getChildren().add(row1);
            }

            scrollPanel.getChildren().add(grid);
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Diagnóstico Incluido com Sucesso!", selectedEmpreendimentoLote.getDscLote());
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Incluir o Diagnóstico o Processo: ", selectedEmpreendimentoLote.getDscLote());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }