Oi! Cada linha do meu datatable corresponde a um projeto. Eu queria que na minha última coluna tivesse um botão de deletar, que deleta-se o projeto correspondente aquela linha. Mas como eu vou saber qual linha foi selecionada para que eu delete o projeto correto? Ai segue o datable como esta (sem o botão de deletar):
Quando precisei fazer alguma coisa nesse sentido acabei optando por colocar
um commandLink que faz a exclusão em cada linha da datatable, por simplificação mesmo. É possível fazer da maneira que vc está pensando, mas é um pouco complexo. Esse é o código que usei:
O pior é que eu já fiz isso, mas faz 1 ano… e eu não lembro… Eu lembro que não era muito intuitivo, mas era possível.
D
davidbuzatto
Olá Ariane!
Vou descrever os passos ai vc precisa correr atrás para aprender o que fazer.
1 - Cria mais uma coluna com um commandButton
2 - O commandButton criado deve ser amarrado (usar o parâmetro bindind) com um componente (UICommand) no seu Backing Bean.
3 - No parâmetro value vc precisa passar o valor que identifica aquela linha (para o banco seria o ID da linja da tabela por exemplo)
3 - No parâmetro action do commandButton indique o método do Backing Bean que vai ser executado.
4 - Nesse método vc pega o valor do UICommand que está amarrado com o botão e exclui o registro da base de dados ou da sua estrutura. O valor do command button vai ser o ID, sendo assim fica fácil de excluir.
5 - Configura o faces-config para depois de excluir retornar a essa página. Ela vai ser recarregada sem a linha que agora já foi excluída.
Até mais!
A
ArianeFelix
Eu acredito que eu fiz o que você disse, mas deve ter algo errado porque não invoca o método do botão.
O binding faz direitinho (chama o método setComponent() ), mas eu não sei qual método do UIComponent eu devo utilizar para recuperar o Projeto da linha em questão, para que ai eu possa deletar o projeto.
Obrigada! Desculpa a insistência…
H
humberto.lima
Pessoal, eu acho q estamos complicando demais. Poderia ser assim:
Isso é possivel porque qndo você clica no commandButton o jsf pesquisa na lista q deu origem a tabela qual objeto foi clicado. Através do equals. Isso quer dizer q o equals tem q funcionar.
Espero ter ajudado.
Humberto Lima
A
ArianeFelix
Obrigada! Mas que tipo de variável é esta request? Eu tentei usar o UIData e fazer o binding com o datatable, deu certo :), é só utiilizar o método getRowData()