none
Atualizar Janela Pai RRS feed

  • Pergunta

  • Boa noite,

    Vou postar uma duvida na esperança que alguém pelo amor de Deus me responda.

    Tenho um formulario asp.x de Vendas, onde há um textbox que vai armazena o nome do Cliente, ao lado há um botão chamado pesquisar cliente. Ao clicar neste botão é aberto um Pou-Up, onde há uma grid com os nomes desses Clientes, onde eu pesquiso e clico em selecionar a linha do datagrid view.

    Ao selecionar a linha estou pegando o nome do cliente e setado em um textbox de controle, clico em fechar o modal, até ai tudo bem. Só que ao fechar o campo Nome do formulário Pai não recebe o nome do formulário filho.

    Já pesquisei vários artigos mais todos pra mim são incompletos e estou com muita dificuldade em fazer, se alguém me ajudar fico muito grato..abaixo segue o código que estou utilizando.

    Tela de Nova Venda (Script para abrir o modal):

     <script type="text/javascript">
            function OpenDialog() {
                //A função open do objeto window cria uma janela pop-up    
                window.open('PesquisarCliente.aspx', 'janela', 'width=500, height=300');
            }
    </script>

    ==================================================================

    Botão que abre o modal na tela de Nova Venda:

    <asp:Button ID="btnPesquisarCliente" runat="server" Text="Pesquisar" onclientclick="OpenDialog();" />   

    ==================================================================

    Evento no Modal de Pesquisa Cliente que armazena a coluna Nome do DatagridView

    protected void TextBoxDataInicio_TextChanged(object sender, EventArgs e)
     {
                TextBoxDataFim.Text = TextBoxDataInicio.Text;
     }

    ==================================================================

    Evento que fecha o Modal na tela de Pesquisa:

    <script type="text/javascript">
            function HideModal() {
                window.opener.location.replace(window.opener.location);
                window.close();
            }
    </script>

    ===================================================================

    Botão que fecha o modal na tela de Pesquisa Cliente:

    <asp:Button ID="Button1" runat="server" Text="Button" onclientclick="HideModal();"/>

    ===================================================================

    Mais uma vez se alguem puder me ajudar agradeço muito.....o meu projeto está emperrado nisso..

    Obrigado

    terça-feira, 19 de abril de 2016 03:04

Respostas

  • Criei uma função atualizaCampo para você utilizar na página principal, note que os IDs dos campos precisam ser ajustados e também deve utilizar ClientIDMode="Static".

    Na janela popup eu comentei o código que faz o recarregamento da página pai, pois se recarregar não vai manter o valor. Se precisar mesmo recarregar a página pai sugiro que utilize querystring da URL para passar o valor.


    Janela pai:

    <script type="text/javascript">
            function OpenDialog() {
                //A função open do objeto window cria uma janela pop-up    
                window.open('PesquisarCliente.aspx', 'janela', 'width=500, height=300');
            }
    		//nova função na tela pai que tem objetivo de preencher o campo texto
    		//Como não encontrei referência do ID do campo usei TextPai para exemplificar
    		function atualizaCampo(valor) {
    			//TextPai precisa estar com ClientIDMode="Static"
    			document.getElementById("TextPai").value = valor;
    		}
    </script>

    Janela modal/popup:

    <script type="text/javascript">
            function HideModal() {
    			//a linha abaixo recarrega a página pai, precisa estar comentada
                //window.opener.location.replace(window.opener.location);
    			
    			//TextBoxDataFim precisa estar com ClientIDMode="Static"
    			var valor = document.getElementById("TextBoxDataFim").value;
    			
    			//chama a nova função JS na página pai passando o valor do textbox
    			window.opener.atualizaCampo(valor);
    			
    			//fecha a janela
                window.close();
            }
    </script>




    terça-feira, 19 de abril de 2016 04:17

Todas as Respostas

  • Criei uma função atualizaCampo para você utilizar na página principal, note que os IDs dos campos precisam ser ajustados e também deve utilizar ClientIDMode="Static".

    Na janela popup eu comentei o código que faz o recarregamento da página pai, pois se recarregar não vai manter o valor. Se precisar mesmo recarregar a página pai sugiro que utilize querystring da URL para passar o valor.


    Janela pai:

    <script type="text/javascript">
            function OpenDialog() {
                //A função open do objeto window cria uma janela pop-up    
                window.open('PesquisarCliente.aspx', 'janela', 'width=500, height=300');
            }
    		//nova função na tela pai que tem objetivo de preencher o campo texto
    		//Como não encontrei referência do ID do campo usei TextPai para exemplificar
    		function atualizaCampo(valor) {
    			//TextPai precisa estar com ClientIDMode="Static"
    			document.getElementById("TextPai").value = valor;
    		}
    </script>

    Janela modal/popup:

    <script type="text/javascript">
            function HideModal() {
    			//a linha abaixo recarrega a página pai, precisa estar comentada
                //window.opener.location.replace(window.opener.location);
    			
    			//TextBoxDataFim precisa estar com ClientIDMode="Static"
    			var valor = document.getElementById("TextBoxDataFim").value;
    			
    			//chama a nova função JS na página pai passando o valor do textbox
    			window.opener.atualizaCampo(valor);
    			
    			//fecha a janela
                window.close();
            }
    </script>




    terça-feira, 19 de abril de 2016 04:17
  • Cesar,

    Obrigado pela resposta, funcionou perfeitamente....

    Agora uma duvida..eu seleciono a linha e guardo o nome do Cliente em um TextoBox.

    Ao selecionar a linha do datagrid existe uma forma de fechar o modal levando os dados para a pagina pai sem precisar clicar no Botão Fechar?

    Obrigado

    sábado, 11 de junho de 2016 02:42