none
Dúvida UpdatePanel GridView RRS feed

  • Pergunta

  • Tenho um GridView dentro de um Update Panel, porém quando eu clico no evento do Grid GridView3_SelectedIndexChanged, o evento não acontece, já tentei colocar como trigger direto no evento selectedindexchanged, porém não funciona também, segue o código do meu UpdatePanel com GridView:

     <asp:UpdatePanel ID="UpdatePanel5" runat="server" ClientIDMode="Predictable">
                                        <ContentTemplate>
                                            <div class="financeiro">
                                                <asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" TabIndex="10" CellPadding="4" ForeColor="#333333" GridLines="None" AllowPaging="True" OnPageIndexChanging="GridView3_PageIndexChanging" OnSelectedIndexChanged="GridView3_SelectedIndexChanged" OnRowEditing="GridView3_RowEditing" OnRowCreated="GridView3_RowCreated">
                                                    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                                                    <Columns>
                                                        <asp:BoundField DataField="id" HeaderText="id" ReadOnly="True" SortExpression="id" />
                                                        <asp:BoundField DataField="vencimento" HeaderText="Vencimento" SortExpression="vencimento" DataFormatString="{0:d}" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"></asp:BoundField>
                                                        <asp:BoundField DataField="observacao" HeaderText="Observação" SortExpression="observacao" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></asp:BoundField>
                                                        <asp:BoundField DataField="valor_pago" HeaderText="Valor" SortExpression="valor_pago" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></asp:BoundField>
                                                        <asp:BoundField DataField="valor" HeaderText=" Valor Pago" SortExpression="valor" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></asp:BoundField>
                                                        <asp:CheckBoxField DataField="quitado" HeaderText="Quitado" SortExpression="quitado" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></asp:CheckBoxField>
                                                        <asp:CommandField ShowSelectButton="True" SelectText="<img src='images/icon/Misc-Edit-icon.png' title='Editar'/>" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" />
                                                        <asp:CommandField ShowDeleteButton="True" DeleteText="<img src='images/icon/Trash-can-icon.png' title='Excluir' />" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></asp:CommandField>
                                                    </Columns>
    
                                                    <EditRowStyle BackColor="#999999" />
                                                    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                                    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                                    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                                                    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                                                    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                                                    <SortedAscendingCellStyle BackColor="#E9E7E2" />
                                                    <SortedAscendingHeaderStyle BackColor="#506C8C" />
                                                    <SortedDescendingCellStyle BackColor="#FFFDF8" />
                                                    <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
                                                </asp:GridView>
                                            </div>
                                        </ContentTemplate>
                                        <Triggers>
                                            <asp:AsyncPostBackTrigger ControlID="GridView3" />
                                        </Triggers>
                                    </asp:UpdatePanel>

    E aqui o código dentro do GridView3_SelectedIndexChanged:

    modalRecebimento.Visible = true;

    E esse é o do modalRecebimento:

     <div class="link_top">
                                    <a href="#dialog_recebimento" name="modal_recebimento" class="linkmodal" runat="server" id="modalRecebimento">Receber Conta</a>
                                </div>
    Esse é um botão para abrir o modal, e ele não fica visível. Obrigado.



    quinta-feira, 22 de junho de 2017 12:23

Respostas

  • Mariana, 

    Segue a solução:

    Dentro do UpdatePanel crie um campo hidden para controlar qual guia está ativa:

    <asp:HiddenField runat="server" ID="hdnTabAtiva" Value="0" />

    No bloco de script atualize o valor do campo hidden quando as guias são clicadas e mantém a última guia ativa:

    var prm = Sys.WebForms.PageRequestManager.getInstance();
    
    	prm.add_endRequest(function () {
    
    		// Mantém ativa as mesmas tabs do último postBack
    		var tabAtivaIndex = $('#<%= hdnTabAtiva.ClientID %>').val();
    		$("#divTabs").tabs({ selected: tabAtivaIndex });
    
    	});
    		
    $(document).ready(function () {
    
    	// Guia1
    	$('#Guia1').click(function () {
    		$('#<%= hdnTabAtiva.ClientID %>').val("0");
    	});
    	// Guia2
    	$('#Guia2').click(function () {
    		$('#<%= hdnTabAtiva.ClientID %>').val("1");
    	});
    	// Guia3
    	$('#Guia3').click(function () {
    		$('#<%= hdnTabAtiva.ClientID %>').val("3");
    	});
    	// Guia4
    	$('#Guia4').click(function () {
    		$('#<%= hdnTabAtiva.ClientID %>').val("4");
    	});
    });
    Espero que ajude,


    Carlos Eduardo Ferreira

    • Marcado como Resposta Mariana C. Costa segunda-feira, 26 de junho de 2017 13:47
    segunda-feira, 26 de junho de 2017 12:57

Todas as Respostas

  • Boa tarde, Mariana C. Costa. Tudo bem?

    Obrigado por usar o fórum MSDN.

    Está aparecendo alguma mensagem de erro?

    atenciosamente,


    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 22 de junho de 2017 17:32
    Moderador
  • Não, tanto que se eu não faço a regra pro modal ficar invisível quando clica abre normalmente, o problema está quando vou clicar no evento select do Grid, e o mesmo não torna a propriedade visível, creio q o problema seja o UpdatePanel, porém de toda forma que tento, não funciona.
    quinta-feira, 22 de junho de 2017 17:58
  • Mariana,

    Tente forçar o updatepanel.

    modalRecebimento.Visible = true;
    UpdatePanel5.Update();


    Carlos Eduardo Ferreira

    quinta-feira, 22 de junho de 2017 19:14
  • Não deu certo também.
    quinta-feira, 22 de junho de 2017 20:17
  • Mariana, 

    Os outros eventos do grid estão funcionando? PageIndex? Editing?


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quinta-feira, 22 de junho de 2017 23:59
  • Sim funciona normal, somente este elemento que não fica visível, o resto do código funciona, olha como ta:

    protected void GridView3_SelectedIndexChanged(object sender, EventArgs e)
            {
    
                GridViewRow _linha = GridView3.SelectedRow;
                String _caminho = _linha.Cells[0].Text;
    
                txtid_recebimento.Text = _caminho;
                txtidReceita.Text = GridView3.SelectedRow.Cells[0].Text;
                GridRecebimento();
                valor_recebimento();
                txtValorDesconto.Text = "0";
    
                modalRecebimento.Visible = true;
                UpdatePanel5.Update();
            }

    sexta-feira, 23 de junho de 2017 16:51
  • Se você remover o UpdatePanel, a aplicação se comporta corretamente?

    Carlos Eduardo Ferreira

    sexta-feira, 23 de junho de 2017 17:36
  • Sim, quando removo o UpdatePanel funciona normalmente.
    sexta-feira, 23 de junho de 2017 18:12
  • Agora tente incluir o updatepanel sem atributos e sem triggers.

    <asp:UpdatePanel ID="UpdatePanel5" runat="server">
    <ContentTemplate>
    <div class="financeiro">
    <asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" TabIndex="10" CellPadding="4" ForeColor="#333333" GridLines="None" AllowPaging="True" OnPageIndexChanging="GridView3_PageIndexChanging" OnSelectedIndexChanged="GridView3_SelectedIndexChanged" OnRowEditing="GridView3_RowEditing" OnRowCreated="GridView3_RowCreated">
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    <Columns>
       <asp:BoundField DataField="id" HeaderText="id" ReadOnly="True" SortExpression="id" />
       <asp:BoundField DataField="vencimento" HeaderText="Vencimento" SortExpression="vencimento" DataFormatString="{0:d}" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"></asp:BoundField>
       <asp:BoundField DataField="observacao" HeaderText="Observação" SortExpression="observacao" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></asp:BoundField>
       <asp:BoundField DataField="valor_pago" HeaderText="Valor" SortExpression="valor_pago" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></asp:BoundField>
       <asp:BoundField DataField="valor" HeaderText=" Valor Pago" SortExpression="valor" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></asp:BoundField>
       <asp:CheckBoxField DataField="quitado" HeaderText="Quitado" SortExpression="quitado" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></asp:CheckBoxField>
       <asp:CommandField ShowSelectButton="True" SelectText="<img src='images/icon/Misc-Edit-icon.png' title='Editar'/>" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" />
       <asp:CommandField ShowDeleteButton="True" DeleteText="<img src='images/icon/Trash-can-icon.png' title='Excluir' />" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></asp:CommandField>
    </Columns>
    <EditRowStyle BackColor="#999999" />
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <SortedAscendingCellStyle BackColor="#E9E7E2" />
    <SortedAscendingHeaderStyle BackColor="#506C8C" />
    <SortedDescendingCellStyle BackColor="#FFFDF8" />
    <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>
    </div>
    </ContentTemplate>
    </asp:UpdatePanel>



    Carlos Eduardo Ferreira

    sexta-feira, 23 de junho de 2017 19:26
  • Como eu uso Tabs, ele funciona, porém volta pra primeira tab, sabe como eu faço pra voltar pra tab selecionada ? 
    sexta-feira, 23 de junho de 2017 19:48
  • Que tipo de Tabs? JQuery?

    Carlos Eduardo Ferreira

    segunda-feira, 26 de junho de 2017 11:53
  • Sim, pq como ele está atualizando e mudando de tab selecionada, posso colocar pra depois do evento, ficar na tab selecionada.
    segunda-feira, 26 de junho de 2017 12:17
  • Mariana, 

    Segue a solução:

    Dentro do UpdatePanel crie um campo hidden para controlar qual guia está ativa:

    <asp:HiddenField runat="server" ID="hdnTabAtiva" Value="0" />

    No bloco de script atualize o valor do campo hidden quando as guias são clicadas e mantém a última guia ativa:

    var prm = Sys.WebForms.PageRequestManager.getInstance();
    
    	prm.add_endRequest(function () {
    
    		// Mantém ativa as mesmas tabs do último postBack
    		var tabAtivaIndex = $('#<%= hdnTabAtiva.ClientID %>').val();
    		$("#divTabs").tabs({ selected: tabAtivaIndex });
    
    	});
    		
    $(document).ready(function () {
    
    	// Guia1
    	$('#Guia1').click(function () {
    		$('#<%= hdnTabAtiva.ClientID %>').val("0");
    	});
    	// Guia2
    	$('#Guia2').click(function () {
    		$('#<%= hdnTabAtiva.ClientID %>').val("1");
    	});
    	// Guia3
    	$('#Guia3').click(function () {
    		$('#<%= hdnTabAtiva.ClientID %>').val("3");
    	});
    	// Guia4
    	$('#Guia4').click(function () {
    		$('#<%= hdnTabAtiva.ClientID %>').val("4");
    	});
    });
    Espero que ajude,


    Carlos Eduardo Ferreira

    • Marcado como Resposta Mariana C. Costa segunda-feira, 26 de junho de 2017 13:47
    segunda-feira, 26 de junho de 2017 12:57
  • Deu certo, obrigado.
    segunda-feira, 26 de junho de 2017 13:47