Fala povo…
Tenho uma dataTable da seguinte forma:
<rich:column>
<h:outputText value="#{pessoas.nome}" />
</rich:column>
Ao clicar no item editar na coluna da tabela, preciso que seja aberta uma janela de edição com os campos já preenchidos com os dados da linha clicada.
Minha tela de edição tem por exemplo o campo:
<h:inputText id="nome" size="30" value="#{meuBean.nome}"/>
Meu backbean tem:
public String nome;
gets and sets...
Quando clico no editar, no action chamo em meu bean um método que seta o atributo nome assim:
this.nome = currentItem.getNome();
Mas qnd abre a janela o campo nome esta em branco.
Alguém pode dar uma mão?
Abraço
floripa2011, tenta colocar um código mais completo. Dessa forma fica difícil saber o que esta acontecendo.
Seguinte:
Declare em seu MB um objeto UIData. Na sua dataTable, faça o binding para este objeto. Dentro de sua action, vc pega o objeto que o usuário clicar utilizando o metodo getRowDada de UIData.
exemplo:
SeuObjeto seuObjeto = (SeuObjeto) getUIData().getRowData()
Após esta etapa, popule os campos que serão editado e chame a página de edição!
[quote=Tiburcio_Mancha]Seguinte:
Declare em seu MB um objeto UIData. Na sua dataTable, faça o binding para este objeto. Dentro de sua action, vc pega o objeto que o usuário clicar utilizando o metodo getRowDada de UIData.
exemplo:
SeuObjeto seuObjeto = (SeuObjeto) getUIData().getRowData()
Após esta etapa, popule os campos que serão editado e chame a página de edição![/quote]
Falae cara…
Eu to pegando os dados da linha clicada desta forma:
<f:setPropertyActionListener value="#{pessoas}" target="#{meuBean.currentItem}" />
No meu bean os dados chegam corretos, através do atributo currentItem eu tenho os dados da linha clicada, feito isso seto no bean o atributo nome, que é o mesmo que está no value do inputtext, porém quando abre a janela, ainda está em branco.
Blz cara…
Segue os trechos mais completos.
DataTable
[code]<rich:dataTable id=“dataTable” onRowMouseOver=“this.style.backgroundColor=’#F1F1F1’”
onRowMouseOut=“this.style.backgroundColor=’#{a4jSkin.tableBackgroundColor}’”
cellpadding=“0” cellspacing=“0” width=“100%” border=“0” var=“pessoas”
value="#{meuBeanBean.pessoas}" rendered="#{!empty meuBeanBean.pessoas}">
<f:facet name="header">
<rich:columnGroup>
<rich:column breakBefore="true">
<h:outputText value="Nome" />
</rich:column>
<h:outputText value="Acoes" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column>
<h:outputText value="#{pessoas.nome}" />
</rich:column>
<rich:column style="text-align: center;" width="95">
<h:outputText>
<a4j:commandLink ajaxSingle="true" id="editlink" action="#{meuBean.preencherDados}"
oncomplete="#{rich:component('panelEditar')}.show()">
<h:graphicImage value="/images/edit.gif" style="border:0" />
<f:setPropertyActionListener value="#{pessoas}"
target="#{meuBean.currentItem}" />
<f:setPropertyActionListener value="#{row}" target="#{meuBean.currentRow}" />
</a4j:commandLink>
<rich:spacer width="10"/>
<a4j:commandLink ajaxSingle="true" id="deletelink" reRender="dataTable" action="#{meuBean.deletarPessoa}">
<h:graphicImage value="/images/delete.gif" style="border:0" />
<a4j:support event="onclick" reRender="dataTable"/>
<f:setPropertyActionListener value="#{pessoas}"
target="#{meuBean.currentItem}" />
<f:setPropertyActionListener value="#{row}" target="#{meuBean.currentRow}" />
</a4j:commandLink>
</h:outputText>
</rich:column>[/code]
Form Editar
[code]<h:form id=“formEditar”>
<h:panelGrid columns=“2”>
<h:outputText value=“Name: “/>
<h:inputText id=“nome” size=“30” value=”#{meuBean.nome}”/>
</h:panelGrid>
<rich:spacer width="126"/>
<h:commandButton styleClass="rich-button" value="Salvar" action="#{meuBean.editarPessoa}"/>
<rich:spacer width="3"/>
<h:commandButton styleClass="rich-button" value="Cancelar" action="#" onclick="#{rich:component('panelEditar')}.hide()">
</h:commandButton>
</h:form>[/code]
Bean
[code]private Pessoa currentItem = new Pessoa();
public String nome;
public Pessoa getCurrentItem() {
return currentItem;
}
public void setCurrentItem(Pessoa currentItem) {
this.currentItem = currentItem;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public void preencherDados() {
this.nome = currentItem.getNome();
}[/code]
É mais ou menos isso…
abraço
E ai floripa2011, posta o codigo do seu ManageBean ?