none
pegar valor textbox dinamico RRS feed

  • Pergunta

  • Olá,

    Eu tenho um datalist que está exibindo alguns textos.

    Estou criando um botão em tempo de execução, onde ao ser clicado está criando um textbox com o texto que está sendo exibido no datalist. Isso tudo no mesmo campo do datalist. Estou criando dentro de um Panel.

    A ideia é que eu possa editar esse texto. Quando clico no botão para atualizar, após ter feito as minhas alterações no texto, eu precisaria pegar esse texto para poder fazer a persistência no banco. 

    O problema é que como tudo está sendo criado dinamicamente, ao clicar no botão de atualizar ele passa primeiramente pelo pageload onde se encontra a minha lógica onde crio os controles, recriando tudo e perdendo assim o que foi digitado e alterado antes de passar pelo meu updateCommand.

    Alguém poderia me ajudar?


    quarta-feira, 30 de maio de 2012 17:59

Todas as Respostas

  • Diogo,

    Coloca a sua lógica de criar os controles quando a página for executada para primeira vez.. para isso vc suaria o

    if (!IsPostBack)
    {
    //Sua Logica
    }

    Mas para que possamos te ajudar melhor, poste seu código.. A cada postback o botao é recriado ? Sempre?

    quarta-feira, 30 de maio de 2012 18:07
  • Olá Gustavo,

    Então, com quero manter os botoes na página a lógica fica fora do (!IsPostBack).

                if (!Page.IsPostBack)
                {
                    ...
                }
                CriaOsBotoesDeEdicao();
                
                ...
    
                protected void MeuDatalist_EditCommand(...)  
                {
                    //aqui ele insere os textbox e também cria um botao para atualizar.
                }
                
                
                protected void MeuDatalist_UpdateCommand(...)
                {
                    //Aqui era para ele fazer a persistência, mas os valores ja foram perdidos por que passou pelo pageload.
                }
                ...

    Aqui da para ter uma ideia da minha lógica.

    Mais alguma sugestão?


    • Editado Diogo_Costa quarta-feira, 30 de maio de 2012 18:32
    quarta-feira, 30 de maio de 2012 18:31
  • Olá Diogo!

    Você precisa dar uma olhada sobre o "Ciclo de vida das páginas aspx".

    Para manipular esse tipo de coisa, salvo o engano, você precisará escrever no Page_PreInit.

    Ciclo de vida: http://msdn.microsoft.com/pt-br/library/ms178472(v=vs.90).aspx

    Mais especificamente sobre sua dúvida: http://social.msdn.microsoft.com/Forums/pt/aspnetpt/thread/22fb2169-d393-41b2-ad3f-66d02d1d59d6

    quarta-feira, 30 de maio de 2012 18:40
  • joga o valor que vc quer em um campo hidden.

    Junior

    quarta-feira, 30 de maio de 2012 19:15
  • E ae Murillo,

    Vou dar uma olhada nos links que você passou.

    Junior,

    Você teria um exemplo pratico de como eu possa fazer isso? Para pegar os dados digitados no TextBox?

    quarta-feira, 30 de maio de 2012 19:25
  • Por que não joga o valor em uma Session? no evento de clicar no atualizar armazena em uma Session, e no Page_Load vc pega o valor...  (não sei nem se Sessions devem ser usadas desta forma... mas fica a sugestão)
    quarta-feira, 30 de maio de 2012 19:49
  • Problema da Session é sobrecarregar o servidor. Então depende da implementação(finalidade).
    quinta-feira, 31 de maio de 2012 19:48
  • Diogo no aspx vc delcara <input id="nome" type="hidden" runat="sever" />

    no codebehind vc pega o que vc quer guardar tipo um textbox ou uma variável

    hidden.value = textbox.text;

    Eu faço assim qdo quero guardar um valor de uma variável, após um postback.


    Junior

    sexta-feira, 1 de junho de 2012 11:28
  • Olá pessoal, vou testar as sugestões de vocês e volto para dar um retorno. ;)
    sexta-feira, 1 de junho de 2012 13:34
  • Para resolução destes problemas eu recorro sempre ao Request.Forms. Lá você consegue obter o valor pelo id que foi gerado dinamicamente para o controle.

    Luís Fernando Vendrame

    sexta-feira, 1 de junho de 2012 15:28