none
Erro ao colocar update progress em uma aplicação website RRS feed

  • Pergunta

  •  

    Pessoal

    Hoje é dia

    Coloquei um update panel e update progress na minha aplicação website onde a rotina faz uma chamada de um metodo do webservice e carrega as informações em um gridview

    Ate ai nada de anormal porem quando rodo a aplicação e faço a solicitação ocorre esse erro:

     

    Erro em tempo de execução do Microsoft JScript: Sys.InvalidOperationException: Two components with the same id 'MainContent_UpdateProgress1' can't be added to the application.

     

    Abaixo segue o trecho do codigo da pagina aspx

     

    <table style="width: 100%;" ID="tbgrDados" >
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
    <tr>
    <td align="center">
    <asp:UpdateProgress ID="UpdateProgress1" 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/ajax-loader (3).gif" />
    </ProgressTemplate>
    </asp:UpdateProgress>
    </td>
    </tr>
    <tr>
    <td>
    <asp:GridView ID="grdDados" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" Width="100%" AutoGenerateColumns="False" HorizontalAlign="Center">
    <AlternatingRowStyle BackColor="White" />
    <EditRowStyle BackColor="#7C6F57" />
    <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#0C4536" Font-Bold="True" ForeColor="White" Font-Names="Tahoma" Font-Size="8pt" />
    <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="#E3EAEB" />
    <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
    <SortedAscendingCellStyle BackColor="#F8FAFA" />
    <SortedAscendingHeaderStyle BackColor="#246B61" />
    <SortedDescendingCellStyle BackColor="#D4DFE1" />
    <SortedDescendingHeaderStyle BackColor="#15524A" />
    </asp:GridView>

    </td>
    </tr>
    </ContentTemplate>
    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="lkbMesReferencia" EventName="Click" />
    <asp:AsyncPostBackTrigger ControlID="lkbMesReferencia_2" EventName="Click" />
    <asp:AsyncPostBackTrigger ControlID="lkbMesReferencia_3" EventName="Click" />
    </Triggers>
    </asp:UpdatePanel>
    </table>

     

    Essa é a rotina da execução do metodo:

     

    private void PreencherGridReferencia()
    {


    ServiçosSoapClient carregaterminaisdogestor = new ServiçosSoapClient();
    string login = Session["usuario"].ToString();
    string senha = Session["senha"].ToString();


    //==================================================
    ServiçosSoapClient carregaconsolidado = new ServiçosSoapClient();

    string contrato = "";
    string codigoarea = "";
    string prefixo = "";
    string ramal = "";
    int mesreferencia = 0;
    int anoreferencia = 0;
    string [] listadado;


    List<string> myStringList = new List<string>();


    var resultadoBruto = carregaterminaisdogestor.CarregaTerminaisPorGestor(login, senha);

    var ListaDTO = resultadoBruto.Select(x => x.Split(';')).Select(y => new CarregaTerminaisDoGestor()
    {
    CentroCusto = y[7].ToString(),
    Contrato = y[5].ToString(),
    Departamento = y[3].ToString(),
    Operadora = y[4].ToString(),
    Ref = null,//y[7].ToString(),
    CodigoArea = y[0].ToString(),
    Prefixo = y[1].ToString(),
    Ramal = y[2].ToString(),
    Terminal = y[0].ToString() + y[1].ToString() + y[2].ToString(),
    Usuario = y[6].ToString(),
    Vcto = null,
    Valor = null
    }).ToList();

    foreach (var lista in ListaDTO)
    {

    codigoarea = lista.CodigoArea;
    prefixo = lista.Prefixo;
    ramal = lista.Ramal;
    contrato = lista.Contrato;
    mesreferencia = Convert.ToInt16(Session["mes"].ToString());
    anoreferencia = Convert.ToInt16(Session["ano"].ToString());
    try
    {
    var resultadoBrutoReferencia = carregaconsolidado.CarregaConsolidado(login, senha, contrato, codigoarea, prefixo, ramal, mesreferencia, anoreferencia);

    listadado = resultadoBrutoReferencia.Split(';');
    lista.Ref = Session["mes"].ToString() + "/" + Session["ano"].ToString();
    lista.Valor = listadado[1];
    lista.Vcto = listadado[0];
    }
    catch (Exception ex)
    {
    ex.Message.ToString();
    }

    }




    dbTerminal.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;


    this.grdDados.DataSource = ListaDTO;
    this.grdDados.DataBind();


    }

     

    OBS: Quando eu removo os dois componentes (updatepanel e updateprogress) o erro não ocorrre.

    Tenho somente um componente (updatepanel e updateprogress) de cada na aplicação.

     

    Alguem pode me ajudar?

     

    Att

     

     

    Marcos P. Marchette


    Marcos Marchette
    sábado, 19 de novembro de 2011 20:30

Respostas

  • Rodrigo

    Consegui resover.

    Não sei se essa e a melhor solução:

    Separei o Update Panel do Update Progress e coloquei em em duas table separadas:

     

    Segue o codigo:

     

      <table style="width: 100%;" ID="tbgrDados" >

             <tr>

               <td align="center">

                   <asp:UpdateProgress ID="updPnlProgresso" runat="server" ClientIDMode="Static">

                   <ProgressTemplate>

                       <asp:Label ID="Label1" runat="server" Text="Aguarde! Solicitação sendo processada">

                       </asp:Label><br />

     

                       <asp:Image ID="Image1" runat="server" ImageUrl="~/Imagens/ajax-loader (2).gif">

                       </asp:Image>

                       </ProgressTemplate>

                   </asp:UpdateProgress>

     

               </td>

             </tr>

        </table>

        <table style="width: 100%;">

        <asp:UpdatePanel ID="updPnlDados" runat="server" AssociatedUpdatePanelID="updPnlProgresso" UpdateMode="Conditional" ChildrenAsTriggers="False">

            <ContentTemplate>

     

              <tr>

               <td>

                   <asp:GridView ID="grdDados" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" Width="100%" AutoGenerateColumns="False"  HorizontalAlign="Center">

                       <AlternatingRowStyle BackColor="White" />

                       <EditRowStyle BackColor="#7C6F57" />

                       <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />

                       <HeaderStyle BackColor="#0C4536" Font-Bold="True" ForeColor="White" Font-Names="Tahoma" Font-Size="8pt" />

                       <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />

                       <RowStyle BackColor="#E3EAEB" />

                       <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />

                       <SortedAscendingCellStyle BackColor="#F8FAFA" />

                       <SortedAscendingHeaderStyle BackColor="#246B61" />

                       <SortedDescendingCellStyle BackColor="#D4DFE1" />

                       <SortedDescendingHeaderStyle BackColor="#15524A" />

                   </asp:GridView>

     

               </td>      

              </tr>

              </ContentTemplate>

                <Triggers>

                    <asp:AsyncPostBackTrigger ControlID="lkbMesReferencia" EventName="Click" />

                    <asp:AsyncPostBackTrigger ControlID="lkbMesReferencia_2" EventName="Click" />

                    <asp:AsyncPostBackTrigger ControlID="lkbMesReferencia_3" EventName="Click" />

                </Triggers>

          </asp:UpdatePanel>   

        </table>

     

     

     

    A unica coisa que esta dando erro agora é que o gridview que esta dentro do update panel esta duplicando.

     

    Att

     

     

    Marcos

     


    Marcos Marchette
    segunda-feira, 21 de novembro de 2011 17:14
  • Perfeito Marcos. Apesar que deveria ter funcionado da outra forma também. Mas usar desta forma ai não tem problemas, costumo fazer assim. Enfim, que bom que deu certo.

    Abraços.


    Rodrigo Reis Ferreira
    Microsoft Certified
    • Marcado como Resposta Marcos Marchette terça-feira, 6 de dezembro de 2011 17:47
    segunda-feira, 21 de novembro de 2011 17:53

Todas as Respostas

  • Boa tarde Marcos, também não consegui ver problema no código acima. Fiz um teste aki e não tive problemas. Poderia postar o restante do código?

    aproveite e dê uma olhada nesse post: http://kb.cnblogs.com/a/1428558/

    É justamente um problema relacionado a criação redundante de controle em páginas com postback assíncrono.

    abraços


    Rodrigo Reis Ferreira
    Microsoft Certified
    segunda-feira, 21 de novembro de 2011 16:46
  • Rodrigo

    Consegui resover.

    Não sei se essa e a melhor solução:

    Separei o Update Panel do Update Progress e coloquei em em duas table separadas:

     

    Segue o codigo:

     

      <table style="width: 100%;" ID="tbgrDados" >

             <tr>

               <td align="center">

                   <asp:UpdateProgress ID="updPnlProgresso" runat="server" ClientIDMode="Static">

                   <ProgressTemplate>

                       <asp:Label ID="Label1" runat="server" Text="Aguarde! Solicitação sendo processada">

                       </asp:Label><br />

     

                       <asp:Image ID="Image1" runat="server" ImageUrl="~/Imagens/ajax-loader (2).gif">

                       </asp:Image>

                       </ProgressTemplate>

                   </asp:UpdateProgress>

     

               </td>

             </tr>

        </table>

        <table style="width: 100%;">

        <asp:UpdatePanel ID="updPnlDados" runat="server" AssociatedUpdatePanelID="updPnlProgresso" UpdateMode="Conditional" ChildrenAsTriggers="False">

            <ContentTemplate>

     

              <tr>

               <td>

                   <asp:GridView ID="grdDados" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" Width="100%" AutoGenerateColumns="False"  HorizontalAlign="Center">

                       <AlternatingRowStyle BackColor="White" />

                       <EditRowStyle BackColor="#7C6F57" />

                       <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />

                       <HeaderStyle BackColor="#0C4536" Font-Bold="True" ForeColor="White" Font-Names="Tahoma" Font-Size="8pt" />

                       <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />

                       <RowStyle BackColor="#E3EAEB" />

                       <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />

                       <SortedAscendingCellStyle BackColor="#F8FAFA" />

                       <SortedAscendingHeaderStyle BackColor="#246B61" />

                       <SortedDescendingCellStyle BackColor="#D4DFE1" />

                       <SortedDescendingHeaderStyle BackColor="#15524A" />

                   </asp:GridView>

     

               </td>      

              </tr>

              </ContentTemplate>

                <Triggers>

                    <asp:AsyncPostBackTrigger ControlID="lkbMesReferencia" EventName="Click" />

                    <asp:AsyncPostBackTrigger ControlID="lkbMesReferencia_2" EventName="Click" />

                    <asp:AsyncPostBackTrigger ControlID="lkbMesReferencia_3" EventName="Click" />

                </Triggers>

          </asp:UpdatePanel>   

        </table>

     

     

     

    A unica coisa que esta dando erro agora é que o gridview que esta dentro do update panel esta duplicando.

     

    Att

     

     

    Marcos

     


    Marcos Marchette
    segunda-feira, 21 de novembro de 2011 17:14
  • Perfeito Marcos. Apesar que deveria ter funcionado da outra forma também. Mas usar desta forma ai não tem problemas, costumo fazer assim. Enfim, que bom que deu certo.

    Abraços.


    Rodrigo Reis Ferreira
    Microsoft Certified
    • Marcado como Resposta Marcos Marchette terça-feira, 6 de dezembro de 2011 17:47
    segunda-feira, 21 de novembro de 2011 17:53