Atualizar listView

23 views
Skip to first unread message

Diogo Prosoft

unread,
Sep 23, 2010, 11:45:53 AM9/23/10
to Wicket em Português
Galera tenho uma lista e no PopulateItem coloquei um botão excluir
para remover o item porém não estou conseguindo atualizar a lista para
apagar as informações na linha excluída, ex.:

Codigo | Nome | Excluir
1 | Diogo | Remover
2 | Teste | Remover


no codigo eu criei um container onde adiciono um listview dentro do
listview onde faço o populateitem para listar o grid adicionei um
AjaxLink que seria o remover, ai quando clico no remover ele remove no
banco mais não atualiza o grid removendo a linha, fiz vários testes
adicionando no target do ajaxLink o container fiz uma reconsulta mesmo
assim nada existe algum método para atualizar o listview?

Diogo Schmidt Soares

unread,
Sep 27, 2010, 8:05:52 AM9/27/10
to Wicket em Português
Vou postar meu código para vcs darem um olhada pra ver o que preciso fazer para atualizar meu listview pois ao clicar no link está excluindo
no banco mais não esta removendo da lista, o que preciso fazer????

final WebMarkupContainer container = new WebMarkupContainer("container");
        final ListView listaItensNFEntrada = new ListView("listaItensNFEntrada",new Model()) {

private static final long serialVersionUID = 1L;
@Override
protected void populateItem(final ListItem item) {
final ItemEntradaBean itemNFEntrada = (ItemEntradaBean)item.getModelObject();
try{
item.add(new Label("nmProduto",itemNFEntrada.getItemEntradaFk().getProdutoBean().getNmProduto()));
item.add(new Label("qtdEntrada",itemNFEntrada.getItemEntradaFk().getQtdEntrada().toString()));
item.add(new Label("vlCompra",TypeConverter.formataValorBR(Float.parseFloat(itemNFEntrada.getItemEntradaFk().getVlCompra().toString()))));
Float subTotal = itemNFEntrada.getItemEntradaFk().getQtdEntrada() * itemNFEntrada.getItemEntradaFk().getVlCompra();
total += subTotal;
vlTotal.setModelObject(TypeConverter.formataValorBR(Float.parseFloat(total.toString())));

notaFiscalEntradaBean.setVlTotal(total);
salvaTotal(notaFiscalEntradaBean);
item.add(new AjaxLink("excluirItem") {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
PersistenciaDAO persistenciaItem = new PersistenciaDAO();
try{
persistenciaItem.delete(itemNFEntrada);
}catch(Exception e){
error(e.getMessage());
target.addComponent(feedback);
}
}
});
//Aqui eu altero o css da linha da tabela dinamicamente.
item.add(new AttributeModifier("class", true, new AbstractReadOnlyModel<String>(){
private static final long serialVersionUID = 1L;

@Override
public String getObject(){
return (item.getIndex() % 2 == 1) ? "even" : "odd";
}
       }));

}catch(Exception e){
error(e.getMessage());
}
}
};
container.add(listaItensNFEntrada);
container.setOutputMarkupId(true);
container.setOutputMarkupPlaceholderTag(true);
container.setVisible(false);
add(container);
--
Visitem meu blog.: http://diogosoares.info
Sigam-me no Twitter.: @diogoprosoft
Meu Skype.: diogoprosoft
Meu msn.: diogop...@gmail.com
Meu Gtalk.: diogop...@gmail.com
Meu Facebook.: diogop...@gmail.com

Pedro Math

unread,
Sep 27, 2010, 8:17:03 AM9/27/10
to wicke...@googlegroups.com
Viva Diogo.
Acabei de ver o teu codigo, parece-me que falta somente a chamada:

target.addComponent(<o teu container>);

Nao sei se isso ai em cima, ir'a funcionar, porque nunca fiz. O que eu ja fiz nesse contexto foi:

- coloquei um Button fora do container.
- coloquei checkBoxes em cada linha do ListView, de modo que o user possa escolher a opcao e depois clickar o botao remover.
- depois programei o Button da seguinte forma:


        cmdRemover = new AjaxFallbackLink("cmdRemover"){

            @Override
            public void onClick(AjaxRequestTarget target) {
                //removendo a lista
                List<CaeClasse_Wrapper> destin = new ArrayList();
                List<CaeClasse_Wrapper> source =  pnlActividades.getLista();
                for(NuitCaeClasse_Wrapper item: source)
                {
                    if(!item.isSelected()){
                        destin.add(item);
                    }
                }
                source.clear();
                source.addAll(destin);
                pnlActividades.setLista(source);
                target.addComponent(pnlActividades);
                try{
                    enquadraContribuinte();
                }
                catch(Exception e) {;}
            }
        };


espero ter ajudado.


cmpts: theSolverX

2010/9/27 Diogo Schmidt Soares <diogop...@gmail.com>


--
# Mensagem do grupo "Wicket em Português" do Google Groups.
* Para postar, envie e-mail para: wicke...@googlegroups.com
* Para cancelar inscrição, envie e-mail para wicket-ptbr...@googlegroups.com
* Mais opções, visite http://groups.google.com.br/group/wicket-ptbr?hl=pt-BR



--
theSolverX

Bruno Borges

unread,
Sep 27, 2010, 9:17:41 AM9/27/10
to wicke...@googlegroups.com
Isso mesmo.

É preciso "atualizar" o div onde o item estava.

Por isso que no retorno do Ajax, é preciso colocar o componente cujo conteudo foi alterado.

[]'s
Bruno Borges
www.brunoborges.com.br
+55 21 76727099

"The glory of great men should always be
measured by the means they have used to
acquire it."
 - Francois de La Rochefoucauld



2010/9/27 Diogo Schmidt Soares <diogop...@gmail.com>
Vou postar meu código para vcs darem um olhada pra ver o que preciso fazer para atualizar meu listview pois ao clicar no link está excluindo

Diogo Schmidt Soares

unread,
Sep 27, 2010, 9:40:24 AM9/27/10
to wicke...@googlegroups.com
Eu já fiz vários testes tentando atualizar a div porém em nenhuma tive sucesso vou mostrar como eu tinha feito antes derrepente é só um pequeno 
problema...

final WebMarkupContainer container = new WebMarkupContainer("container");
        final ListView listaItensNFEntrada = new ListView("listaItensNFEntrada",new Model()) {

private static final long serialVersionUID = 1L;
@Override
protected void populateItem(final ListItem item) {
final ItemEntradaBean itemNFEntrada = (ItemEntradaBean)item.getModelObject();
try{
item.add(new Label("nmProduto",itemNFEntrada.getItemEntradaFk().getProdutoBean().getNmProduto()));
item.add(new Label("qtdEntrada",itemNFEntrada.getItemEntradaFk().getQtdEntrada().toString()));
item.add(new Label("vlCompra",TypeConverter.formataValorBR(Float.parseFloat(itemNFEntrada.getItemEntradaFk().getVlCompra().toString()))));
Float subTotal = itemNFEntrada.getItemEntradaFk().getQtdEntrada() * itemNFEntrada.getItemEntradaFk().getVlCompra();
total += subTotal;
vlTotal.setModelObject(TypeConverter.formataValorBR(Float.parseFloat(total.toString())));

notaFiscalEntradaBean.setVlTotal(total);
salvaTotal(notaFiscalEntradaBean);
item.add(new AjaxLink("excluirItem") {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
PersistenciaDAO persistenciaItem = new PersistenciaDAO();
try{
persistenciaItem.delete(itemNFEntrada);
//Para atualizar o listview
this.setModelObject(persistenciaDAO.lista(...));
//Adicionando o caintainer para atualizar
target.addComponent(container);
}catch(Exception e){
error(e.getMessage());
target.addComponent(feedback);
}
}
});
//Aqui eu altero o css da linha da tabela dinamicamente.
item.add(new AttributeModifier("class", true, new AbstractReadOnlyModel<String>(){
private static final long serialVersionUID = 1L;

@Override
public String getObject(){
return (item.getIndex() % 2 == 1) ? "even" : "odd";
}
       }));

}catch(Exception e){
error(e.getMessage());
}
}
};
container.add(listaItensNFEntrada);
container.setOutputMarkupId(true);
container.setOutputMarkupPlaceholderTag(true);
container.setVisible(false);
add(container);

Bruno Borges

unread,
Sep 27, 2010, 9:42:27 AM9/27/10
to wicke...@googlegroups.com
Voce usa um LoadableDetachableModel ?

Cristiano Kliemann

unread,
Sep 27, 2010, 10:02:12 AM9/27/10
to wicke...@googlegroups.com
O this.setModelObject não está atualizando o Model do AjaxLink não ao invés do ListView? Tente um listaItensNFEntrada.setModelObject.

A propósito, o ideal é usar LoadableDetachableModel.

[]'s
Cristiano
http://www.cristianok.org

Diogo Schmidt Soares

unread,
Sep 27, 2010, 10:05:28 AM9/27/10
to wicke...@googlegroups.com
Segui o que o Pedro me disse criando os checkbox e deu certo vou deixar assim, value pela ajuda pessoal

Diogo Schmidt Soares

unread,
Sep 27, 2010, 10:17:20 AM9/27/10
to wicke...@googlegroups.com
entendi vou fazer um teste com ele também, vlw Cristiano

Djalma Junior Silva

unread,
Oct 4, 2010, 6:15:46 PM10/4/10
to wicke...@googlegroups.com

Bruno Borges

unread,
Oct 4, 2010, 6:42:51 PM10/4/10
to wicke...@googlegroups.com

Valeu Djalma. Dois artigos sao meus ... ;)

Bruno Borges
Sent from mobile



2010/9/27 Diogo Schmidt Soares <diogop...@gmail.com>
>

> entendi vou fazer um teste com ele tam...

--
Djalma G. Silva Jr

--
# Mensagem do grupo "Wicket em Português" do Google Groups.

* Para postar, envie e-mail para: ...

Reply all
Reply to author
Forward
0 new messages