none
Problema com UpdatePanel + Controles ASP.NET (tables)

    Question

  • boa tarde galera.

    Seguinte estou com um problema no UpdatePanel, estou usando ele para controlar o visible de 2 tabelas com radio buttons.

    Na primeira vez que eu realizo uma chamada, ele faz o procedimento normalmente, porem da segunda em diante ele não faz o que deveria fazer (esconder uma tabela e aparecer com a outra).

    Controles que não estavam funcionando como a chamada do de um gridview ou da ação dos botões eu coloquei triggers de metodos postback. Mas ainda sim não consegui resolver essa questão.

    Eu ja coloquei breakpoints nos eventos dos radion buttons, ele ate passa por eles e faz a inversão nos valores dos visibles das tabelas, mas ao final da execução, nada acontece.

    Segue o codigo aspx do trecho que usa o updatepanel:

        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Inline">
            <ContentTemplate>
                <table class="auto-style1" runat="server" id="tblPesquisa">
                    <tr>
                        <td colspan="4" style="text-align: left">
                            <asp:Button ID="btnNovoCadastro" runat="server" CssClass="hooverbuttonmenores" Text="Novo Cadastro" OnClick="btnNovoCadastro_Click" />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="4">
                            <asp:ValidationSummary ID="vsUsuario" runat="server" CssClass="lblAvisos" ShowMessageBox="True" ShowSummary="False" />
                        </td>
                    </tr>
                    <tr>
                        <td style="text-align: right" class="auto-style6">
                            <asp:Label ID="lblTipoPesquisa" runat="server" CssClass="lblSubTitulo" Text="Selecione o tipo de pesquisa:"></asp:Label>
                            &nbsp;&nbsp;&nbsp;
                        </td>
                        <td class="auto-style4">
    
                            <asp:RadioButton ID="rbNome" runat="server" CssClass="lbl" GroupName="pesquisa" Text="Pesquisa por Nome" AutoPostBack="True" OnCheckedChanged="rbNome_CheckedChanged" />
    
                        </td>
                        <td class="auto-style5">
    
                            <asp:RadioButton ID="rbEmail" runat="server" CssClass="lbl" GroupName="pesquisa" Text="Pesquisa por E-mail" AutoPostBack="True" OnCheckedChanged="rbEmail_CheckedChanged" />
    
    
                        </td>
                        <td>
    
                            <asp:RadioButton ID="rbTodos" runat="server" CssClass="lbl" GroupName="pesquisa" Text="Exibir todos" AutoPostBack="True" OnCheckedChanged="rbTodos_CheckedChanged" />
    
    
                        </td>
                    </tr>
                    <tr>
                        <td colspan="4">&nbsp;</td>
                    </tr>
                </table>
    
                <table class="auto-style1" runat="server" id="tblPesquisaNome" visible="false">
                    <tr>
                        <td style="text-align: right" class="auto-style7">
                            <asp:Label ID="lblNomeUsuario" runat="server" CssClass="lbl" Text="Digite o nome do usuário:"></asp:Label>
                            &nbsp; &nbsp; </td>
                        <td class="auto-style8">
                            <asp:TextBox ID="txtNome" runat="server" CssClass="txt"></asp:TextBox>
                            <asp:AutoCompleteExtender ID="txtNome_AutoCompleteExtender" runat="server" MinimumPrefixLength="2"
                                CompletionInterval="100"
                                EnableCaching="false"
                                CompletionSetCount="10"
                                DelimiterCharacters="2"
                                Enabled="True"
                                ServiceMethod="PreencherNome" TargetControlID="txtNome">
                            </asp:AutoCompleteExtender>
                            <asp:TextBoxWatermarkExtender ID="txtNome_TextBoxWatermarkExtender" runat="server" Enabled="True" TargetControlID="txtNome" WatermarkCssClass="watermarked" WatermarkText="Nome do Usuário">
                            </asp:TextBoxWatermarkExtender>
                            <asp:RequiredFieldValidator ID="rfvNome" runat="server" ControlToValidate="txtNome" CssClass="lblAvisos" ErrorMessage="Preencha o nome do Usuário:">*</asp:RequiredFieldValidator>
                        </td>
                        <td>
                            <asp:Button ID="btnPesquisarNome" runat="server" CssClass="hooverbuttonmenores" Text="Pesquisar" OnClick="btnPesquisarNome_Click" />
                        </td>
                        <td>&nbsp;</td>
                    </tr>
                </table>
                <table class="auto-style1" runat="server" id="tblPesquisaEmail" visible="false">
                    <tr>
                        <td class="auto-style7">
                            <asp:Label ID="lblEmail" runat="server" CssClass="lbl" Text="Digite o e-mail do usuário:"></asp:Label>
                            &nbsp;&nbsp;
                        </td>
                        <td>
                            <asp:TextBox ID="txtEmail" runat="server" CssClass="txt"></asp:TextBox>
                            <asp:AutoCompleteExtender ID="txtEmail_AutoCompleteExtender" runat="server" MinimumPrefixLength="2"
                                CompletionInterval="100"
                                EnableCaching="false"
                                CompletionSetCount="10"
                                DelimiterCharacters="2"
                                Enabled="True"
                                ServiceMethod="PreencherEmail" TargetControlID="txtEmail">
                            </asp:AutoCompleteExtender>
                            <asp:TextBoxWatermarkExtender ID="txtEmail_TextBoxWatermarkExtender" runat="server" Enabled="True" TargetControlID="txtEmail" WatermarkCssClass="watermarked" WatermarkText="E-mail">
                            </asp:TextBoxWatermarkExtender>
                            <asp:RequiredFieldValidator ID="rfvEmail" runat="server" ControlToValidate="txtEmail" CssClass="lblAvisos" ErrorMessage="Preencha o e-mail!">*</asp:RequiredFieldValidator>
                        </td>
                        <td class="auto-style3">
                            <asp:Button ID="btnPesquisarEmail" runat="server" CssClass="hooverbuttonmenores" Text="Pesquisar" OnClick="btnPesquisarEmail_Click" />
                        </td>
                        <td></td>
                    </tr>
                </table>
            </ContentTemplate>
            <Triggers>
                <asp:PostBackTrigger ControlID="gvUsuario" />
                <asp:PostBackTrigger ControlID="btnPesquisarNome" />
                <asp:PostBackTrigger ControlID="btnPesquisarEmail" />
                <asp:PostBackTrigger ControlID="btnVoltar" />
                <asp:PostBackTrigger ControlID="rbTodos" />
                <asp:PostBackTrigger ControlID="btnNovoCadastro" />
            </Triggers>
        </asp:UpdatePanel>

    Segue o code behind dos eventos dos radion buttons:

        protected void rbNome_CheckedChanged(object sender, EventArgs e)
        {
            LimparCampos();
            if (rbNome.Checked == true)
            {
                tblPesquisaEmail.Visible = false;
                tblPesquisaNome.Visible = true;
            }
            else
            {
                tblPesquisaNome.Visible = false;
            }
        }
    
        protected void rbEmail_CheckedChanged(object sender, EventArgs e)
        {
            LimparCampos();
            if (rbEmail.Checked == true)
            {
                tblPesquisaNome.Visible = false;
                tblPesquisaEmail.Visible = true;
            }
            else
            {
                tblPesquisaEmail.Visible = false;
            }
    
        }
    
        protected void rbTodos_CheckedChanged(object sender, EventArgs e)
        {
            PesquisaEmail = null;
            PesquisaNome = null;
            tblPesquisaEmail.Visible = false;
            tblPesquisaNome.Visible = false;
            UsuarioN uN = new UsuarioN();
            gvUsuario.DataSource = uN.PesquisarTodos();
            gvUsuario.DataBind();
            btnVoltar.Visible = true;
            lblResultadoPesquisa.Visible = true;
            tblPesquisa.Visible = false;
            lblResultadoPesquisa.Text = "Resultado da pesquisa";
        }

    Alguem sabe o que pode ser? 

    Desde já agradeço

    Monday, March 04, 2013 9:24 PM

All replies

  • Boa Noite,

    Porque você não tenta da seguinte maneira,

     protected void rbNome_CheckedChanged(object sender, EventArgs e)
        {
            LimparCampos();
           
            //Desabilite o outro Radio Button
            rbEmail.Checked = false;
            
            //Oculta PesquisaEmail
            tblPesquisaEmail.Visible = false;
            //Mostra PesquisaNome
            tblPesquisaNome.Visible = true;
           
        }
    
     protected void rbEmail_CheckedChanged(object sender, EventArgs e)
        {
            LimparCampos();
            //Desabilite o outro Radio Button
            rbNome.Checked = false;
            
            //Oculta PesquisaNome
            tblPesquisaNome.Visible = false;
            //Mostra PesquisaEmail
            tblPesquisaEmail.Visible = true;
    
        }

    Enquanto um radio button estiver checkado, o outro não pode estar, caso contrário vai haver conflito em seu código e não vai funcionar.

    veja abaixo das linhas comentadas.

    Monday, March 04, 2013 11:48 PM
  • Ola Evandro, obrigado pela a resposta.

    Fiz isso mas não adiantou em nada, essa sequencia sua faz mais ou menos o que a minha faz, mas continua não dando efeito nenhum, pq como eu disse testei com breakpoint e ele entrava nas condições normalmente, até trocava os valores dos visibles, mas apos isso nada acontecia...

    Tuesday, March 05, 2013 2:51 AM