Usuário com melhor resposta
Atualizar Janela Pai

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
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>
- Editado Cesar Cassiano Schimanco terça-feira, 19 de abril de 2016 04:19
- Marcado como Resposta Marcos SJ terça-feira, 19 de abril de 2016 14:48
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>
- Editado Cesar Cassiano Schimanco terça-feira, 19 de abril de 2016 04:19
- Marcado como Resposta Marcos SJ terça-feira, 19 de abril de 2016 14:48
-
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