Utilizando o rowSelect para abrir um Outpupanel [RESOLVIDO]
9 respostas
C
cleberw3b
Estou com a seguinte duvida, quando eu clico na linha do meu DataTable era para exibir um outputpanel com campos para realizar a resposta. Mas o row fica selecionado sem aparecer.
<h:formid="form"><divid="total"style="padding: 10px;"><divid="title"style="font-size: 18px; padding: 10px;"><h:outputLabelvalue="#{msgs['field.label.responder.solicitacao.title']}"/></div><divid="prega"align="left"style="font-size:12px; padding: 10px;"><h:outputLabelvalue="#{msgs['field.label.responder.solicitacao.pregao']}"/><h:outputTextvalue="#{responderSolicitacaoBean.pregao.numeroPregao}"/><hrstyle="width=90%; noshade"/></div><divid="responderSolicitacao"style="padding: 10px;"><p:dataTableid="respostas"var="solicitacao"value="#{responderSolicitacaoBean.solicitacoes}"selectionMode="single"selection="#{responderSolicitacaoBean.solicitacao}"rowKey="#{solicitacao.id}"><p:ajaxevent="rowSelect"update=":form:panel"/><p:ajaxevent="rowUnselect"update=":form:panel"oncomplete="panel.hide()"/><p:columnheaderText="Data"><h:outputTextvalue="#{solicitacao.dataSolicitacao}"/></p:column><p:columnheaderText="Descricao"style="width: 40%;"><h:outputTextvalue="#{solicitacao.descricao}"/></p:column><p:columnheaderText="Tipo de Solicitacao"><h:outputTextvalue="#{solicitacao.tipoSolicitacao.label}"/></p:column><p:columnheaderText="Participante"><h:outputTextvalue="#{solicitacao.participante.apelido}"/></p:column></p:dataTable><br/><hrstyle="width=90%; noshade"/></div><divid="outpanel"style="padding: 10px;"><p:outputPanelid="panel"autoUpdate="true"layout="block"><h:outputTextvalue="Está funcionando o outputpanel"/></p:outputPanel></div></div></h:form>
Eu tinha visto os dois, o que eu preciso é que quando o user click na linha, ou botao na linha, abra um outputpanel abaixo do datatable para ele efetuar a resposta.
Tipo essa resposta rapida aqui do forum, mas pegando as informações da linha em que foi clicado.
Não queria ter que fazer uma nova pagina e um novo Bean para isso.
G
gustavo_souza
Mas Cleber , você nao precisa criar uma nova página , muito menos um novo Bean, vou te mostrar como ficaria no seu codigo:
<h:formid="form"><divid="total"style="padding: 10px;"><divid="title"style="font-size: 18px; padding: 10px;"><h:outputLabelvalue="#{msgs['field.label.responder.solicitacao.title']}"/></div><divid="prega"align="left"style="font-size:12px; padding: 10px;"><h:outputLabelvalue="#{msgs['field.label.responder.solicitacao.pregao']}"/><h:outputTextvalue="#{responderSolicitacaoBean.pregao.numeroPregao}"/><hrstyle="width=90%; noshade"/></div><divid="responderSolicitacao"style="padding: 10px;"><p:dataTableid="respostas"var="solicitacao"value="#{responderSolicitacaoBean.solicitacoes}"selectionMode="single"selection="#{responderSolicitacaoBean.solicitacao}"rowKey="#{solicitacao.id}"><p:ajaxevent="rowSelect"oncomplete="dialogPanel.show()"/><p:ajaxevent="rowUnselect"/><p:columnheaderText="Data"><h:outputTextvalue="#{solicitacao.dataSolicitacao}"/></p:column><p:columnheaderText="Descricao"style="width: 40%;"><h:outputTextvalue="#{solicitacao.descricao}"/></p:column><p:columnheaderText="Tipo de Solicitacao"><h:outputTextvalue="#{solicitacao.tipoSolicitacao.label}"/></p:column><p:columnheaderText="Participante"><h:outputTextvalue="#{solicitacao.participante.apelido}"/></p:column></p:dataTable><br/><hrstyle="width=90%; noshade"/></div><p:dialogid="dialog"header="Dialog Resposta"widgetVar="dialogPanel"><divid="outpanel"style="padding: 10px;"><p:outputPanelid="panel"autoUpdate="true"><h:outputTextvalue="Está funcionando o outputpanel"/></p:outputPanel></div></p:dialog></h:form>
Copia e cola esse código de cima.
C
cleberw3b
Valeu cara, vou ver se essa especificação comporta no meu projeto.
Abraço.
G
gustavo_souza
Cléber , caso você queira manter o seu codigo antigo, sem o uso do dialog, eu achei o erro nele.
Na linha 18 : <p:ajax event=“rowSelect” update=":form:panel"/> a referência para o id panel está errado, você não precisa colocar os “:” antes do form, porque o componente que você quer dar o update já está dentro do form , então tenta isso:
<p:ajax event=“rowSelect” update=“panel”/>
Nesse caso não precisaria do autoupdate=“true” no outputpanel, porque esse autoupdate=“true” só atualiza o componente automaticamente se você renderizar a tela (ou o componente), é muito usado dentro de dialogs.