none
ASP.NET - Erro no Javascript RRS feed

  • Pergunta

  • Olá pessoal, tudo bom?

    Seguinte... minha aplicação em ASP.NET está funcionando quase beleza. Estou com o seguinte problema:

    Tenho uma página que tem um datagridview com duas páginas.

    No Visual Studio, qualquer ação que faço envolvendo o datagrid como clicar na próxima página, clicar em Alterar Status funciona uma beleza. Porém quando publico nada referente ao datagrid funciona. Quando clico na próxima página ou em qualquer ação dentro do datagrid não acontece nada e dá o seguinte erro na barra de status do navegador:

    Mensagem: Objeto esperado
    Linha: 74
    Caractere: 217
    Código: 0
    URI: http://localhost/inventario/inventario/adminfiliais.aspx

    A linha que se refere contém o seguinte código:

    if(document.getElementById('divProcessando') && document.getElementById('divProcessando').style.display!='none')return false;if (typeof(ValidatorOnSubmit) == 'function' && ValidatorOnSubmit() == false) return false; avisoAguarde();
    return true;

    Eu tenho um Javascript que quando o usuário clica em qualquer ação dentro da página, enquanto está processando a requisão do usuário, exibe um gif animado para o usuário saber que está sendo carregado os dados.

    Fiz um teste e tirei o código do Javascript da página e aí ele funcionou beleza. Mas preciso que funcione com este Javascript porque senão o usuário não saberá que o programa está executando a solicitação dele.

    Alguém sabe como posso resolver este problema?

    quinta-feira, 23 de fevereiro de 2012 18:35

Respostas

  • Uma ótima alternativa neste caso é o uso do UpdatePanel e UpdateProgress para exibir uma animação enquanto espera a resposta da solicitação.

    Coloca um UpdatePanel em volta do grid e um updateprogress dentro com um gif(pode ser apenas um texto ou imagem estática mesmo):

    <asp:UpdateProgress ID="UpdateProgress12" runat="server">
         <ProgressTemplate>
                <asp:Label ID="Label1" runat="server" Text="Label">Aguarde! Processando a solicitação.</asp:Label><br />
                <asp:Image ID="Image1" runat="server" ImageUrl="~/imagens/load.gif" />
         </ProgressTemplate>
    </asp:UpdateProgress>


    Rodrigo Reis Ferreira
    Microsoft Certified


    • Sugerido como Resposta Thiago-deOliveira sexta-feira, 24 de fevereiro de 2012 14:04
    • Marcado como Resposta EFN sexta-feira, 24 de fevereiro de 2012 14:47
    • Editado Rodrigo Reis Ferreira sexta-feira, 24 de fevereiro de 2012 16:33
    sexta-feira, 24 de fevereiro de 2012 11:05
  • OLÁ AMIGO, CREIO QUE SEJA MELHOR VC UTILIZA O  UPDATEPANEL E O UPDATEPROGRESS.

    ESTOU ENCAMINHANDO UM CÓDIGO.

    **********************************************************ASPX.CS***************************************************

            

    using System;
    using System.Web.UI.WebControls;

    public partial class _Default : System.Web.UI.Page 
    {
        int valor1 = 3;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregaUpdateProgress();
            }

        }
        public void carregaUpdateProgress()
        {
            if (!IsPostBack)
            {
                if (valor1 > 2)
                {
                    Button1_Click(this, new EventArgs());
                }
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(5000);
            Label1.Text = "UpdatePanel!";
            Image img = new Image();
            img.FindControl("gif");
            img.ImageUrl = "~/images/carregando1.gif";
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(2000);
            Label1.Text = "Sem o update panel!";
        }
    }

    *************************************************ASPX**************************************************************

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>


    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                    &nbsp;<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="GERAR GIF" />
                </ContentTemplate>
            </asp:UpdatePanel>
            <br />
            <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
                <ProgressTemplate>
                    <br />
                    <img id="GIF" runat="server" alt="OLA" src="images/carregando1.gif" style="width: 300px;
                        height: 300px" /><br />
                    carregando...
                </ProgressTemplate>
            </asp:UpdateProgress>
        </div>
        </form>
    </body>
    </html>

    VOCÊ SÓ PRECISA PEGAR UM GIF E COLOCAR NA PASTA DE DESTINO.

    QUALQUER COISA ESCREVE AI.


    Caso a resposta tenha ajudado favor marcar como respondida.

    • Marcado como Resposta EFN sexta-feira, 24 de fevereiro de 2012 14:48
    sexta-feira, 24 de fevereiro de 2012 13:26

Todas as Respostas

  •  Boa tarde!!
     
        Achei estranho essa primeira verificação do seu if:
    if(document.getElementById('divProcessando') && document.getElementById('divProcessando').style.display!='none')

       Está certa??


    Thiago Rogerio
    www.thiagorogerio.com.br
    thiagorogeriobr@hotmail.com

    quinta-feira, 23 de fevereiro de 2012 19:40
  • Oi Thiago,

    Na verdade o tenho uma function em um arquivo Jscript no Visual Studio da seguinte forma:

    function avisoAguarde()
    {
        if(document.getElementById('divProcessando'))
        {
            document.getElementById('divProcessando').style.display='';
            return;
        }
        oDiv = document.createElement("div");
        with(oDiv)
        {
            id = "divProcessando";
        }
        document.body.appendChild(oDiv);
    }

    Esta conversão que postei é do site quando está rodando no navegador. Ele é quem produz desta forma.

    Ele está presente em todas as minhas páginas do aplicativo, mas somente onde tenho o datagridview que não funciona, entende?

    quinta-feira, 23 de fevereiro de 2012 19:59
  • Uma ótima alternativa neste caso é o uso do UpdatePanel e UpdateProgress para exibir uma animação enquanto espera a resposta da solicitação.

    Coloca um UpdatePanel em volta do grid e um updateprogress dentro com um gif(pode ser apenas um texto ou imagem estática mesmo):

    <asp:UpdateProgress ID="UpdateProgress12" runat="server">
         <ProgressTemplate>
                <asp:Label ID="Label1" runat="server" Text="Label">Aguarde! Processando a solicitação.</asp:Label><br />
                <asp:Image ID="Image1" runat="server" ImageUrl="~/imagens/load.gif" />
         </ProgressTemplate>
    </asp:UpdateProgress>


    Rodrigo Reis Ferreira
    Microsoft Certified


    • Sugerido como Resposta Thiago-deOliveira sexta-feira, 24 de fevereiro de 2012 14:04
    • Marcado como Resposta EFN sexta-feira, 24 de fevereiro de 2012 14:47
    • Editado Rodrigo Reis Ferreira sexta-feira, 24 de fevereiro de 2012 16:33
    sexta-feira, 24 de fevereiro de 2012 11:05
  • OLÁ AMIGO, CREIO QUE SEJA MELHOR VC UTILIZA O  UPDATEPANEL E O UPDATEPROGRESS.

    ESTOU ENCAMINHANDO UM CÓDIGO.

    **********************************************************ASPX.CS***************************************************

            

    using System;
    using System.Web.UI.WebControls;

    public partial class _Default : System.Web.UI.Page 
    {
        int valor1 = 3;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregaUpdateProgress();
            }

        }
        public void carregaUpdateProgress()
        {
            if (!IsPostBack)
            {
                if (valor1 > 2)
                {
                    Button1_Click(this, new EventArgs());
                }
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(5000);
            Label1.Text = "UpdatePanel!";
            Image img = new Image();
            img.FindControl("gif");
            img.ImageUrl = "~/images/carregando1.gif";
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(2000);
            Label1.Text = "Sem o update panel!";
        }
    }

    *************************************************ASPX**************************************************************

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>


    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                    &nbsp;<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="GERAR GIF" />
                </ContentTemplate>
            </asp:UpdatePanel>
            <br />
            <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
                <ProgressTemplate>
                    <br />
                    <img id="GIF" runat="server" alt="OLA" src="images/carregando1.gif" style="width: 300px;
                        height: 300px" /><br />
                    carregando...
                </ProgressTemplate>
            </asp:UpdateProgress>
        </div>
        </form>
    </body>
    </html>

    VOCÊ SÓ PRECISA PEGAR UM GIF E COLOCAR NA PASTA DE DESTINO.

    QUALQUER COISA ESCREVE AI.


    Caso a resposta tenha ajudado favor marcar como respondida.

    • Marcado como Resposta EFN sexta-feira, 24 de fevereiro de 2012 14:48
    sexta-feira, 24 de fevereiro de 2012 13:26
  • Oi pessoal, muito obrigado pelas sugestões.

    Resolvi usar o UpdateProgress e tem funcionado beleza.

    Muito obrigado.

    sexta-feira, 24 de fevereiro de 2012 14:47
  • Oi pessoal, muito obrigado pelas sugestões.

     

    Resolvi usar o UpdateProgress e tem funcionado beleza.

     

    Muito obrigado.

    sexta-feira, 24 de fevereiro de 2012 14:48