Skip to main content

Exibindo processo que ocorrem durante o program para o usuário

Hoje veremos como exibir para o usuário quais os passos que o programa faz durante um processo referente a regra de negocio.
A finalidade é mostrar o que esta sendo feito pois as vezes o program pode demorar um pouco para responder devido a um processo na maquina ou até um envio de e-mail.
Crie um novo WebApplication no visual Studio.

Na pagina Default.aspx da aplicação vamos colocar alguns campos simples para simular um formulário.
Ex:
<style type="text/css">
    .campo{
padding:5px;
        float:left;    
    }
</style>    
<script language="javascript" type="text/javascript">
    
    function RespostaServidor(ResultString) {
        var result = document.getElementById("result");
        result.innerHTML = ResultString;
    }

    function SalvarDados() {
        var form = new GetForm()
        PageMethods.Salvar(form, RespostaServidor);
        PageMethods.EnviarEmail(RespostaServidor);
        PageMethods.Concluir(RespostaServidor);
    }

    function GetForm() {
        this.Nome = $get("txbNome").value;
        this.Telefone = $get("txbTelefone").value;
        this.Email = $get("txbEmail").value;
    } 
</script>
<div class="campo">
Nome
<input id="txbNome" type="text" />
    </div>
<div class="campo">
Telefone
<input id="txbTelefone" type="text" />
    </div>
<div class="campo">
E-mail
<input id="txbEmail" type="text" />
    </div>
<div>
<input onclick="SalvarDados();" type="button" value="Salvar" />
        <span id="result"></span>
    </div>

A classe JavaScript "GetForm()" é um modelo para capturar os dados do formulário, e é recebida pelo C# no tipo "Dictionary<string,string>".
Criei um WebMethod para cada ação que será executada pelo servidor e as utilizei na função javascript "SalvarDados()" que por sua vez armazena a resposta do servidor em uma outra função "RespostaServidor(ResultString)" apresentando a resposta do webMethod na tag <span id="result"></span>.

Para simular o tempo de processo no servidor utilizei Thread.Sleep(3000);
Veja na listagem a baixo como ficaram os webMethods:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using System.Web.Services;

namespace TesteAssincronoMetodos
{
    public partial class _Default : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
           
           
        }
        public string PublicRetorno(Dictionary form, string text)
     {

            switch (text)
            { 
                case "Inicio" : text = "Salvando dados do usuário "+form["Nome"]; break;
                case "Enviando Email...": text = "Enviando Email " + form["Email"] + "..."; Thread.Sleep(3000); break;
                case "Concluido": Thread.Sleep(3000); break;
            }
           
            return text;
     }

        #region WebMethods
        [WebMethod]
        public static string Salvar(Dictionary jsForm)
        {
            Form_ = jsForm;
            string msg = new TesteAssincronoMetodos._Default().PublicRetorno(jsForm,"Inicio");
            return msg;
        }
        [WebMethod]
        public static string EnviarEmail()
        {

            string msg = new TesteAssincronoMetodos._Default().PublicRetorno(Form_, "Enviando Email...");
            return msg;
        }
        [WebMethod]
        public static string Concluir()
        {
            string msg = new TesteAssincronoMetodos._Default().PublicRetorno(null,"Concluido");
            return msg;
        }
        #endregion

        public static Dictionary Form_ { get; set; }

    }
}

É isso ai galera qualquer duvida ou sugestão basta entrar com contato.

Comments

Popular posts from this blog

Criando um filtro de busca customizável com JavaScript funcional

Tutoriais utilizando bibliotecas e frameworks para state management se tornaram comuns. Apesar disso, já que muita gente usa muitos frameworks diferentes, muitas vezes precisamos falar sobre a plataforma que permite isso tudo: a odiadíssima ferramenta que é o JavaScript, na sua forma mais pura — conforme descrito com documentações excelentes como a da MDN . Esse tutorial também pode ser útil para quem está iniciando em JavaScript e desenvolvimento em geral já começar com alguma ideia do que é programação funcional. O termo está se tornando popular e quem não subir nesse barco pode ficar para trás em pouco tempo. Não vamos adentrar nos detalhes do que é programação funcional neste artigo — isso é assunto para outras horas de conversa. Aqui, ficaremos no rápido e simples: alcançar nosso objetivo, evitando mutações dos dados e estado global. Iniciando o projeto Pelo bem da simplicidade, vamos manter tudo num único arquivo, que vai ter essa cara: <!DOCTYPE HTML> ...

Verificar sequencia de caracteres iguais em uma string c#

Neste post vamos ver como explorar uma string e verificar se existe uma seqüencia de caracteres iguais dentro da string. Utilizaremos a tabela ASCII para verificar letras e números, se você precisar verificar mais caracteres basta consultar a tabela e colocar o número referente na condição. Neste exemplo vou verificar se existe na string uma seqüencia quatro(4) números iguais e o mesmo para uma seqüencia de três(3) letras, pois acho que em números de documentos ou nomes isto não pode acontecer. Tabela de decimal ASCII public static bool ValidaTexto(this string txt) { bool flag = true; if (txt.Length < 3) { flag = false; } else { int contLetras = 0; int contNumeros = 0; int tmp = (int)txt.ToCharArray()[0]; foreach (char c in txt.ToCharArray()) { if (((int)c < 127 && (int)c >= 65)) { if (tmp == (int)c) { contLetras++; } if (contLetras >= 3) { break; } tmp = (int)c; } } //inicia novamente o armazenador tmp =...

Posts e consultas no twitter pelo windows phone 7 part 2 de 2

No artigo anterior ( Posts e consultas no twitter pelo windows phone 7 part 1 de 2 ) no vimos como construir uma aplicação no windows phone 7 que faça consultas no twitter utilizando o api do twitter; Neste artigo vamos tentar construir nesta mesma aplicação algo que o usuário possa fazer o login no twitter, visualize seus posts e adicione novos. No passo anterior no menu da aplicação nos deixamos um item chamado "login" que servira pra redirecionar para uma tela que o usuário possa efetuar o login no twiter; Para que essa parte da aplicação funcione  precisamos registrar nossa aplicação no twitter; Acesse dev.twitter.com . A aplicação deve ser to tipo Browser e a Callback URL informada, essa é uma das exigências do twitter, como nos vamos utilizar a URL do google( http://www.google.com ). Apos o registro da aplicação  o twitter retorna as url's necessárias para as transações. Para conseguirmos buscar e enviar informações no twitter vamos util...