Usuário com melhor resposta
Erro ao colocar update progress em uma aplicação website

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
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- Marcado como Resposta Eder CostaModerator terça-feira, 6 de dezembro de 2011 12:50
-
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
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- Editado Rodrigo Reis Ferreira segunda-feira, 21 de novembro de 2011 16:52
-
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- Marcado como Resposta Eder CostaModerator terça-feira, 6 de dezembro de 2011 12:50
-
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