Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

David Rocha

[Resolvido] Problemas com ModalPopupExtender

Recommended Posts

Olá amigos.

Estou desenvolvendo uma aplicação de cadastro de clientes. Então criei essa tela:

 

tela1h.jpg

 

Quando eu clicar no ImageButton "+" abre o seguinte ModalPopUp para eu cadastrar então

os dados:

 

tela2w.jpg

 

Aonde esta escrito Mover, é um panel que dá pra mover, uma espécie de DragPanel.

Quando eu clico em "Mostrar" um Label com o texto "lalalala" aparece, e se clico em "Esconder" o Label desaparece, tudo via método C# CheckedChanged.

O problema é que quando eu clico num dos RadioButtons "Mostrar" e "Esconder" nada mais funciona! Se clicar no botão "Cancelar" ou "Salvar" nada ocorre, e seu tentar mover o ModalPopUp tbm não consigo, é preciso então atualizar a página manualmente pra voltar a funcionar. Entretando clicar em "Mostrar" e "Esconder" continua funcionando perfeitamente, ele exibe e esconde o Label "lalalala"...

 

Lembrando tbm que os botões "Cancelar" e "Salvar" funcionam, desde que eu não clique nos RadioButtons. É como se a página carregasse via AutoPostBack dos RadioButtons mas só recarregasse os radiobuttons, deixando o resto da pagina inativa. Eu tentei colocar um Panel fora do UpdatePanel mas aí quando eu clico nos RadioButtons o PostBack faz com que o ModalPopUp desapareça, sendo necessario clicar novamente no ImageButton "+"

 

Abaixo segue meu código:

<asp:ScriptManager ID="Scriptmanager1" runat="server" EnablePartialRendering="true">
   </asp:ScriptManager>


   <asp:Panel ID="Geral" runat="server" CssClass="modalPanel" Style="display: none">
       <asp:UpdatePanel ID="Cliente" runat="server" UpdateMode="Conditional" CssClass="modalPanel"
           style="background-color: White; border: solid 2px #EEEEEE; padding: 5px;">
           <ContentTemplate>
               <asp:Panel ID="DragPanel" runat="server" Style="border: solid 2px #cccccc; width: 98%;
                   cursor: move;">
                   Mover
               </asp:Panel>

               <asp:RadioButton ID="rbTipoPessoaFisica" runat="server" GroupName="TEste" OnCheckedChanged="rbTipoPessoaFisica_CheckedChanged"
                   AutoPostBack="true" Text="Esconder" />
               <asp:RadioButton ID="rbTipoPessoaJuridica" runat="server" GroupName="TEste" OnCheckedChanged="rbTipoPessoaJuridica_CheckedChanged"
                   AutoPostBack="true" Text="Mostrar" />
                   <br /> 
               <asp:Label ID="teste" runat="server" Text="lalalala" Visible="false"></asp:Label>
               <div class="left">
                   <asp:Button ID="btnSalvar" runat="server" Text="Salvar" OnClick="btnSalvar_Click"/>
                   <asp:Button ID="btnCancela" CssClass="button" runat="server" Text="Cancelar" />
               </div>
           </ContentTemplate>
       </asp:UpdatePanel>
   </asp:Panel>

   <asp:ModalPopupExtender ID="ModalCliente" runat="server" BackgroundCssClass="modalBg"
       DropShadow="true" PopupControlID="Geral" TargetControlID="btnAdd" OkControlID="btnSalvar"
       CancelControlID="btnCancela" PopupDragHandleControlID="DragPanel" >
   </asp:ModalPopupExtender>

 

 

Alguém consegue entender o erro??

 

Obrigado a quem puder ajudar... :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade o que será ali é o seguinte:

 

Campo: Tipo Pessoa: o Física o Jurídica

 

Se marcar Física vai aparecer campos como CPF, Data de Nascimento, etc.

Se marcar Jurídica vai aparecer campos CNPJ, IE, etc..

 

E eu preciso analizar isso dentro do C#. Se eu apenas atualizar isso no javascript será que o C#

vai conseguir capturar o SelectedValue corretamente ?? Porque sem o postback ele nao consegue ler isso. :cry:

 

Vou tentar aqui fazer via javascript, se nao der faço gambirra, mas seria mais interessante se funcionasse isso certinho :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

E como seria essa função Javascript?

Não manjo de javascript, eu sei é absurdo, mas realmente não tive tempo

para estudar a fundo essa linguagem.

Eu tentei procurar aqui no goole, mas nada pareceu funcionar :ermm:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae complicou...

Você como programador web vai ter que aprender javascript vai por mim. Bom momento pra correr atras.

Pesquise como localizar seus controles, depois disso acredito que basta utilizar os métodos hide e show

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok! Consegui, com muito custo rsrs, Eu estava tentando esconder um panel porém o panel ja estava com a propriedade Visible = false, então não importa o que fazia no javascript, o controle ASP.NET continuava invisivel para mim (Cliente).

Então eu tirei isso, adicionei uma <DIV> encapsulando os PANELs, atribui a div um ID e adicionei um estilo com a propriedade visibilty = none.

Feito isso, criei o seguinte código javascript:

 

function abrirPF() //Mostra os controles que se referem a Pessoa Fisica e esconde o resto
{
   var theControlJuridico = document.getElementById("divJuridica");
   var theControlFisica = document.getElementById("divFisica");


   theControlJuridico.style.display = "none";
   theControlFisica.style.display = "block";

}

function abrirPJ() //Mostra os controles de Pessoa Jurídicae esconde o resto
{
   var theControlJuridico = document.getElementById("divJuridica");
   var theControlFisica = document.getElementById("divFisica");

   theControlJuridico.style.display = "block";
   theControlFisica.style.display = "none";
}

 

Ficando meu codigo do radiobuttons HTML assim:

 

<asp:RadioButton 
    ID="rbTipoPessoaFisica" 
    runat="server" 
    GroupName="TipoPessoa" 
    Text="Pessoa Física" onClick="abrirPF();" />

<asp:RadioButton 
    ID="rbTipoPessoaJuridica" 
    runat="server" GroupName="TipoPessoa"
    Text="Pessoa Jurídica" onClick="abrirPJ();" />
</asp:Label>


<div id="divFisica"  style="display:none">
  //...TODO CONTEUDO AQUI
</div>

<div id="divJuridica" style="display:none">
   //...TODO CONTEUDO AQUI
</div>

 

Obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.