none
FormView - Manter dados após insert mau sucedido. RRS feed

  • Pergunta

  • Saudações!

    Estou utilizando formview para uma interface de cadastro, e não consigo manter os dados nos respectivos campos após inserção mal sucedida.

    Explicando melhor: estou inserindo um registro e por algum motivo ele não é aceito pelo banco de dados gerando uma exceção de banco, o problema é que por padrão o formview passa para o estado de consulta (FormViewMode.ReadOnly), não permitindo que eu volte ao registro para tentar consertar o que pode estar errado.

    Adicionei ao evento ItemInserted do form o seguinte código:

            protected void formDados_ItemInserted(object sender, FormViewInsertedEventArgs e)
            {
                if (e.AffectedRows <= 0)
                {
                    e.KeepInInsertMode = true;
                }
            }

    Agora o form continua em estado de inserção, poderem perde os dados anteriormente digitados, fica como se fosse inserir um novo registro.

    Gostaria de poder ter de volta o registro, com os dados, para poder edita-lo e tentar fazer a inserção novamente.

    Agradeço a quem tiver a solução ou poder indicar um artigo ou dica.

    sexta-feira, 18 de maio de 2012 19:47

Todas as Respostas

  • Eu creio que o problema esteja acontecendo pq na verdade você está fazendo a verificação APÓS a inserção do FormView e então verificando se houve a inserção ou não.

    Penso que a melhor forma seja verificar os dados ANTES disto acontecer. Você pode fazer isso com inserções no banco ou uma validação com Custom Validate. Use o método OnItemInserting() e no erro, retorne e.Cancel = true e então a inserção será tratada.

    Veja: http://msdn.microsoft.com/pt-br/library/system.web.ui.webcontrols.formview.iteminserting.aspx


    Rafael Santos
    E-mail: rsdsantos@gmail.com

    Pequeno Gafanhoto

    sexta-feira, 18 de maio de 2012 20:12
  • Rafa,

    Obrigado pela atenção!

    Mas no evento OnItemInserting(), ainda não tenho o retorno do metodo de inserção (estou utilizando objectDataSource), preciso deste retorno pra saber se deu tudo certo no banco, o grande problema é que pela sequência o metodo de inserção roda depois do evento OnItemInserting()  e tenho o retorno pelo evento OnItemInserted, mas ai o proprio formview passa para o estado de consulta (FormViewMode.ReadOnly), não permitindo que eu tenha acesso ao registro (sendo inserido) para poder manipula-lo.

    Usei o código abaixo de mantem no estado de inserção, mas ai os dados não estão mais la.

            protected void formDados_ItemInserted(object sender, FormViewInsertedEventArgs e)
            {
                if (e.AffectedRows <= 0)
                {
                    e.KeepInInsertMode = true;
                }
            }

    Preciso ter os dados de volta, ai apartir da mensagem de retonro corrigir os dados e pedir pra inserir novamente.

    Hoje quando pressione Inserir, vai pra uma tela de consulta em branco e o usuário não sabe o que aconteceu, se o registro foi inserido ou não e isso pode gerar problemas.

    sábado, 19 de maio de 2012 17:38