Para finalizar o CRUD criado ao logo da semana, iremos implementar o delete de registros.
- Parte 1 – Preparando o ambiente, criando os projetos Flex e PHP, testando a conexão
- Parte 2 – Inserindo dados com ZendAmf e Flex
- Parte 3 – Exibindo os dados no DataGrid
- Parte 4 – Alterando dados
Para deletar um registro, precisamos inicialmente criar um botão que tem o mesmo comportamento do botão editar, ou seja, ele fica disponível somente se uma linha do DataGrid estiver selecionada. Isso é feito com o seguinte código:
<s:Button label="Apagar" top="10" left="150"
enabled="{dg.selectedIndex!=-1}">
<s:click>
<![CDATA[
RemotePessoas.Delete(dg.selectedItem.id);
]]>
</s:click>
</s:Button>
Veja que agora chamamos o método Delete do PHP, que está implementado a seguir:
function Delete($idPessoa)
{
$this->db->delete("pessoas", "id = {$idPessoa}");
return true;
}
Para finalizar, precisamos atualizar o DataGrid assim que o registro for deletado. Isso é feito da seguinte forma:
<fx:Declarations>
<mx:RemoteObject id="RemotePessoas"
destination="zend"
source="Pessoas">
<mx:method name="TesteConexao"
result="OnTestConexaoOk(event)"/>
<mx:method name="GetAll"
result="OnGetAll(event)"/>
<mx:method name="Delete"
result="OnDelete(event)"/>
</mx:RemoteObject>
</fx:Declarations>
..............
protected function OnDelete(event:ResultEvent):void
{
GetAll();
}
Com isso conseguimos deletar os registros que criamos.
Você pode baixar o código fonte completo aqui.
Conclusões
O desenvolvimento de sistemas, seja ele em flex ou não, sempre está passível de erros. Este crud apresentado possui
diversas melhorias que podem ser feitas e fica como “dever de casa” para você. Fique a vontade em criticar o código,
é assim que se aprende (e não copiando/colando)…
Esta série de artigos marcou minha despedida das férias, que tirei exclusivamente para trabalhar em casa. Foi muito
proveitoso, muito bom. Quero mais !! To pensando em virar freela !! Tem algum trabalho ae??
Muito bom o artigo completo Daniel, te agradeço muito pois era isso mesmo que eu buscava, mas já que eu mesmo tinha te pedido hehe, será que eu poderia ser mais um pouquinho chato ? (tomando um papel de cliente =D) … gostaria de saber se você poderia fazer um exemplo de login aproveitando este sistema, e também fazer o deploy dele para a web.. um grande abraço Daniel, estou sempre acompanhando seus posts!
ola pode deixa que vou fazer sim
Uma questão, é possível separar todos os botões, datagrid, funções em arquivos separados e chamá-las no flexCrud.mxml, como você fez com o arquivo php, criando um arquivo base e depois usando o include?
Olá, vou avaliar e te responder em breve oK? abs
Otimo material mas fiquei com uma duvida como posso implementar o GetAll( ) para que traga um resultado levando em conta um parametro?
Pesquisar os registros por Nome?
Seus livros ja trata da programação com FLEX 4 ou ainda utiliza o Flex 3.
Desde já muito obrigado.Fico na espera da resposta.
Olá, todos os livros que vendo no site são Flex 4 ! Para fazer um GetAll com filtro, você passa um parametro e adiciona ele no where. Entendeu?
Pingback: Serializando Objetos entre Flex e PHP utilizando AMFPHP ( mapeando VOs / DTOs )
Daniel, boa tarde.
Consegui fazer tudo que está no tutorial, porém estou tentando implementar um Form com um campo de DropDownList mas na hora q vai inserir no banco ele fica em branco.
Existe alguma solução?
Obrigado
vc quer inserir o id do item selecionado do dropdown??
Daniel, já consegui!
Muito bom o tutorial, funcionou ok!
Obrigado, pois ajuda muito que está começando.
Parabéns pela iniciativa
Daniel, tentando implementar tudo que vc passou soh que para o flex 3 nao consegui bons resultados. Sempre da erro. Para o flex 3 o que mudaria desse projeto?
eu colokei o pessoaRemote.Inserir(nome.text,email.text); dentro da funcao chamada no botao gravar mas nada soh da erro aki no meu projeto :/
QUais são os erros?? manda pra suporte@flex.etc.br
O botão de “Apagar” ficou em cima do botão “Atualizar”. Trocaria o valor do parâmetro left por 222 (left=”222″). Bem, tirando uns bugs devido nomes case sensitive e a incompatibilidade com o Flex 3, o tutorial foi bem feito e funcionou de acordo com o resultado esperado.
Parabéns, são pouco os tutorial que encontro na internet onde realmente funcionam.
“Parabéns. São poucos os tutoriais que encontro na internet onde realmente funcionam.”
Daniel.
Parabéns pelo ótimo tutorial e pela iniciativa de ajudar aos outros. Aprendi bastante com esse primeiro exemplo que faço em flex, pois realmente coloquei a mão na massa.
Vi que já há algum tempo não temos novos tutoriais. Enfim, espero que continue postando novos tutoriais e ajudando aos amigos que sabem menos.
Só tenho uma dúvida: como fazer para depois que inserir ou editar o data grid se atualize automaticamente?
Um grnade abraço.
Olá,
a melhor forma é disparar eventos! Realmente não está sobrando tempo para novos tutoriais, estou trabalhando agora e no tempo livro escrevendo livros !!
Boa noite,
Tenho os livros Flex e PHP e Flex e Zend a algum tempo mas só agora consegui me dedicar ao aprendizado do Flex.
Hoje programo para desktop e utilizo Firebird como SGDB. Gostaria de criar um módulo Web para meu software mas esbarei de inicio na dificuldade da conexão do Zend com o Firebird… Você tem algum exemplo básico de conexão com o Firebird?
Ola,
talvez isto te ajude: http://framework.zend.com/wiki/display/ZFPROP/Zend_Db+Firebird-Interbase+support
me fale se nao ajudou ok…
Este link eu já tinha encontrado mas não encontrei nenhum exemplo nele. Baixei o pacote da Zend também e não vi nada de firebird lá.
Adorei o exemplo….
Alguem sabe como colocar os dados numa combobox, em vez de uma datagrid ? Se alguem tentou modificar o exemplo que me ajude…Obrigado.
Daniel, Ótimo tutorial. Tenho a seguinte dúvida:
Sabe quando você insere na tela, um dropdownlist ou um combobox. Quando você salva, você manda salvar o selectedItem.Codigo? no meu caso é assim, eu salvo por Codigo, para depois fazer um join no banco e trazer a descrição.
Pois bem.
Se eu não preencher nada, ou nem tocar no combo ou dropdownlist, o actionscript não deixa preencher
exemplo
mandei salvar, sendo assim temos
Nome, Endereço, Estado (que no caso, seria dentro de um dropdownlist, para selecionar o estado e não deixar que o usuário escreva para não ficar fora do padrão)
Na Atribuição dos dados, temos
pessoa = new Pessoa();
pessoa.Nome = nome.text;
pessoa.Endereco = endereco.text
pessoa.CdEstado = estado.selectedItem.Codigo ***
salvar(pessoa);
Eu não sei o que acontece lá dentro do código, mas o estado(onde está marcado com os 3 asteríscos), não é atribiudo, sendo assim, não salva no banco..
Existe alguma dica para isto
Só para finalizar. Digamos que ele queira um relatório, e dentro de uma tela de relatório, ele possa escolher, por Cliente (DropDownList), Por cidade (DropDownList), Por Estado (DropDownList), enfim. se ele não selecionar os DropDownList, o sistema nada fará, e eu queria ter essa flexibilidade, Pelo menos na hora do relatório.
Obrigado Daniel, obrigado por ler este comentário.