none
preencher txt saindo de outro txt RRS feed

  • Pergunta

  • pessoal..

    preciso atualizar uns txt quando eu sair de um outro txt, isso aplicação web.. preciso que isso seja feito de uma forma que a página mantenha na posição que ela está, ou seja, se tiver barra de rolagem, não voltar pro inicio..

    quem pode ajudar?

    pode ser em vb ou c#..

    quarta-feira, 24 de outubro de 2012 17:41

Respostas

  • Olá Kyrla.

    Existem duas opções que voce pode configurar para resolver seu problema.

    Uma delas é no Web.Config, no elemento pages. Basta configurar a propriedade maintainScrollPositionOnPostBack como true.

    <pages maintainScrollPositionOnPostBack="true" />

    Com isso, sempre depois de qualquer postback a pagina volta exatamente na posição que estava na hora do postback, ou seja, se o usuario rolar a pagina e clicar no botao que esta no meio da página, quando ele terminar o PostBack a pagina é exibida exatamente na mesma posição que a barra de rolagem estava.

    Para resover a questao do focus no botão, voce pode definir isso dinamicamente tambem depois do postback, bastando configurar no code-behind: nomeDoSeuTextBox.Focus();



    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    • Marcado como Resposta kngipa quarta-feira, 24 de outubro de 2012 19:47
    quarta-feira, 24 de outubro de 2012 18:38

Todas as Respostas

  • Olha, isso é mt mais conveniente e fácil de se fazer por javascript (jquery). Não serve para você?

    Utilizando javascript, seu scroll ficará intacto e  será mt mais rápido.

    Pra você fazer isso utilizando jquery, poderia ser assim (colocar bloco de código no fim da tag body):

    <script type="text/javascript">

    //Declaro um evento "blur" (perda de foco) para meu textbox

    $("#ID_Do_meu_textBox").blur(function() {

     //Atribuo o texto "teste" para todas minhas textbox da minha página.

    $("input[type=text]").val('teste');

    });

    </script>

    Obs: O jquery possui os chamados "seletores" que fazem mágicas e tornam o processo mt mais prático e rápido. No exemplo acima utilizo 2 seletores, que são especificados pelo $(""). Dentro deste comando você deve especificar o ID do elemento que quer utilizar, a classe, o tipo de elemento. ou seja o que for. O seletor aceita praticamente qualquer referência. Dessa forma, na declaração do evento, seleciono apenas um elemento e atribuo o evento. No segundo passo, seleciono todas as textboxs e mudo o texto delas.

    utilizando este exemplo, você conseguirá fazer qualquer coisa, referente ao que você pediu.

    Ps: para tuilizar a bblioteca javascript, você deve fazer referência para a mesma. Coloque isto no header da página:

     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript">
        </script>

    quarta-feira, 24 de outubro de 2012 17:51
  • hum..

    no meu caso estou trabalhando com o cep.. e faço isso no meu load

    txtCep.Attributes.Add("onblur", "document.getElementById('aspnetForm').submit()")

    e como se trata de um postback, eu trato isso e chamo uma função para preencher o restante do endereço..

    funciona.. só que com isso, minha página da um refresh, e ao invés de ir para o próximo textbox, volta ao inicio sem nenhum selecionado..

    quarta-feira, 24 de outubro de 2012 17:58
  • Bom, esse método citado por você fica bem melhor se você utiliza-se ajax. Faria a consulta do cep por um webservice,wcf ou pagemethod e assim preencheria suas textbox com o retorno do método sem tem que dar refresh na página.
    quarta-feira, 24 de outubro de 2012 18:30
  • vc tem um exemplo?
    quarta-feira, 24 de outubro de 2012 18:34
  • Olá Kyrla.

    Existem duas opções que voce pode configurar para resolver seu problema.

    Uma delas é no Web.Config, no elemento pages. Basta configurar a propriedade maintainScrollPositionOnPostBack como true.

    <pages maintainScrollPositionOnPostBack="true" />

    Com isso, sempre depois de qualquer postback a pagina volta exatamente na posição que estava na hora do postback, ou seja, se o usuario rolar a pagina e clicar no botao que esta no meio da página, quando ele terminar o PostBack a pagina é exibida exatamente na mesma posição que a barra de rolagem estava.

    Para resover a questao do focus no botão, voce pode definir isso dinamicamente tambem depois do postback, bastando configurar no code-behind: nomeDoSeuTextBox.Focus();



    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    • Marcado como Resposta kngipa quarta-feira, 24 de outubro de 2012 19:47
    quarta-feira, 24 de outubro de 2012 18:38
  • a do focus beleza.. mas ele vem com o texto selecionado.. ai se a pessoa clicar em alguma coisa diferente de tab apaga o texto.. sabe resolver isso ai?
    quarta-feira, 24 de outubro de 2012 18:49
  • Estranho. Fiz um teste e ele não seleciona o texto do controle após o foco. De qualquer forma tente isso:

    /// <summary>
    /// Define o foco no controle indicado.
    /// </summary>
    /// <param name="ControlName">Nome do controle.</param>
    private void SetFocus(string ControlName)
    {
        string jScript = "document.getElementById('" + ControlName + "').focus();";
    
        ClientScriptManager ClientScript = this.Page.ClientScript;
        ClientScript.RegisterStartupScript(this.GetType(), "setFocus", jScript, true);
    }

    Para usar:

     SetFocus(TextBox1.ClientID);

    Abraços.


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    quarta-feira, 24 de outubro de 2012 19:31
  • não deu certo também.. mas não tem problema.. como o campo já vai está preenchido, estou mandando ele pra um em "branco".. como ele vai está posicionado eu limpo ele.. e nesse caso, a sua rotina também funciona..

    o problema todo, é que como estava sendo feito um submit, ele voltava pro primeiro focus, que estava no inicio da página.. mas sentando o focus pelo código, consegui resolver isso também..

    obrigada

    quarta-feira, 24 de outubro de 2012 19:47