(Resolvido)Duplo click acessando dados não correspondentes

@Lucas_Camara

Bom dia, li toda a documentação, tentei quase tudo que estava la, embora só tenha feito(na documentação) apenas um referencia para getItem()

grid.setSelectionMode(SelectionMode.MULTI);
grid.addItemDoubleClickListener(event ->
        copy(grid.getSelectedItems()));

tentei utilizar ele aqui…mas não deu certo, não da erro nenhum, mas ou não busca nenhum produto, ou busca todos os produtos, (se deixarlistaVendidosModal = venda.getProdutos();) NÃO BUSCA NENHUM ou se deixar assim: (listaVendidosModal = produtoVendidoService.read();)BUSCA TODOS

Vamos por partes. Qual o valor que é retornado de event.getItem() no evento de duplo clique?

1 curtida

@Lucas_Camara

Ótimo! O event.getItem() está retornando uma Venda (mas isso já era o esperado como dito pelo @RoinujNosde).

Essa venda está com os dados preenchidos? Veja se a lista de produtos está preenchida e, mais importante, se está com o ID preenchido também.

Faça assim:

venda = event.getItem();
1 curtida

onde vc quer que eu faça isso?

Dentro do evento de duplo clique:

grdVenda.addItemDoubleClickListener(event -> { 
	venda = event.getItem();
	binderVenda.readBean(venda); 
	dlgJanela.open(); 
});

Mas veja se as propriedades da venda retornada pelo event.getItem() estão preenchidos (especialmente o ID e a lista de produtos).

1 curtida

pelo que vi, tudo está preenchido correntamente, então coloquei este código que vc passou:

grdVenda.addItemDoubleClickListener(event -> { 
	venda = event.getItem();
	binderVenda.readBean(venda); 
	dlgJanela.open(); 
});

mas não retorna nenhum produto…não da erro nenhum

Ah sim, para preencher a tabela de produtos, vc deve pegar esses produtos da classe venda.


Vi aqui que vc está usando o método populaGridVendidosModal para popular a grid de produtos vendidos:

private void populaGridVendidosModal() {
	listaVendidosModal = produtoVendidoService.read();
	atualizaGridModal();
}

Vc deve mudá-lo para ficar assim:

private void populaGridVendidosModal() {
	listaVendidosModal = venda.getProdutos();
	atualizaGridModal();
}
1 curtida

aqui eu ja havia mudado, acho que não fiz o push para git

grdVenda.addItemDoubleClickListener(event -> { 
		venda = event.getItem();
		binderVenda.readBean((Venda) venda.getProdutos()); 
		dlgJanela.open(); 
	});

Tentei assim, mas não da certo, da um stack

Vc nao pode fazer esse cast, pois uma lista de produtos não é uma venda. O certo é da forma como passei mesmo.

E vendo aqui, acho que está faltando apenas vc chamar o método que popula a grid de produtos vendidos:

grdVenda.addItemDoubleClickListener(event -> { 
	venda = event.getItem();
	binderVenda.readBean(venda); 
	populaGridVendidosModal();
	dlgJanela.open(); 
});

E deixa o método populaGridVendidosModal assim mesmo:

private void populaGridVendidosModal() {
	listaVendidosModal = venda.getProdutos();
	atualizaGridModal();
}
1 curtida

Nossa cara, deu certo, mas a vontade que da é de xingar …algo tão simples(que eu não pensei nem por 1 segundo) e quando aprende, não da nem para acreditar…rs

Muito obg meu amigo, aprendendo muito com vc!!!

@RoinujNosde obg a vc tbm, sempre aprendendo contigo

1 curtida