Pergunta

Existe um evento de cliente que eu posso usar para quando um dos dados de DropDownList foi carregado / ligado para o controle? Eu preciso evento de disparo do seu lado quando isso acontece.


Basicamente, eu estou tentando bloquear os controles enquanto os dados estão sendo carregados como se houvesse uma desaceleração (não é incomum) um usuário pode começar a introduzir os dados e foco, em seguida, perder como eles são digitação.

Eu tentei fazer isso nas tags, mas os métodos aí localizadas parecem parar de funcionar após a primeira postagem! (Qualquer ajuda lá seria muito apreciada). Como solução Tentei ligar os eventos para os próprios elementos e enquanto isso funciona para bloqueio, usando o evento onchange, eu sou incapaz de desbloqueá-lo sobre os dados com êxito o carregamento!

Todas as idéias? Obrigado pelas respostas até agora :)

Foi útil?

Solução

Uma vez que os dados serão ligados no lado do servidor, você não tem um evento do lado do cliente para esse evento específico, no entanto, uma página tem prestado, os dados estarão lá, então você pode querer executar seu cliente script no evento document.load, ou usar algo como evento document.ready do jQuery. Que irá acionar o seu script para ser executado assim que a página (incluindo o seu baixo queda ligado) é o carregamento final.

Outras dicas

Jason está correto aqui em que você não pode "avisar" o cliente quando tal evento ocorrer. Uma coisa que você pode fazer, é chamar o método Page.RegisterStartupScript () para fazer algo com JavaScript quando a página tem carregamento acabado (e assumidamente que a volta post que fez a sua ligação de dados ocorreu). Novamente, isso pressupõe que você quer fazer algo no lado do cliente uma vez que a ligação de dados estiver concluída, em oposição ao lado do servidor.

Você é capaz de usar ASP.NET AJAX em sua aplicação? Se assim for, você pode ter o evento selecionado abrir um diálogo modal em que você pode exibir seu texto "processamento", enquanto você está preenchendo a lista suspensa. Dessa forma, o usuário não tem acesso a quaisquer outros controles e você pode fazer o que você precisa sem se preocupar.

Eu uso o seguinte código em minhas páginas mestras para meus sites. Isto impede o utilizador de tentar usar um controle antes de seu completamente ligada. Descobri que, se um controle não foi completamente ligados (conexões lentas) então a página explode.

Essencialmente o script seqüestra a volta post, se essa página não é feito. Permitindo que o usuário não fazer nada até que a página tem o processamento final. Escrevi isso há um ano e sua vir em muito acessível.

  1. primeiro definir a tag body onload para setdopostback ()

  2. Adicione esta em um bloco scrip no corpo.

        var boolDoPostBack = false;
    
        if (__doPostBack)
        {
           // save a reference to the original __doPostBack
           var __oldDoPostBack = __doPostBack;
    
          //replace __doPostBack with another function
          __doPostBack = AlwaysFireBeforeFormSubmit;
        }
        function setdopostback()
        {
            boolDoPostBack = true;
        }
        function AlwaysFireBeforeFormSubmit (eventTarget, eventArgument)
        {
            var x= document.readyState
    
            if (x != "complete")
            {
                if (x == "loading" || x == "interactive" || x == "unitialized" || x == "loaded")
                { 
                    //do nothing with IE postback
                }
                else if (!boolDoPostBack)
                {
                    //do nothing with FireFox postback
                }
                else
                {
                    //alert('Allow Postback 1');
                    return __oldDoPostBack (eventTarget, eventArgument);
                }
            }
            else
            {
                //alert('Allow Postback 2');
                return __oldDoPostBack (eventTarget, eventArgument);
            }       
        }
    
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top