Ir para conteúdo

POWERED BY:

Arquivado

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

Diomar Rockenbach

Atualizar campo de outra página.

Recommended Posts

Pessoal,

 

Preciso de ajuda com um situação em um projeto pessoal que estou realizando com finalidade de estudos.

Tenho a seguinte situação, conforme link da imagem abaixo:

 

http://imageshack.us/photo/my-images/834/imagem1let.jpg/

 

Quando eu clicar no botão Salvar(destacado em vermelho), para adicionar um novo serviço, eu preciso atualizar o campo Valor Evento(destacado em vermelho) que está em outra página. Preciso disso, pois quando o usuário fechar a página onde cadastra os serviços, preciso que quando ele voltar o valor do campo Valor Evento esteja atualizado, caso contrário para ver o valor real, teria que carregar os dados novamente da base.

 

Desde já obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está utilizando ajax?

 

Você pode fazer que ao clicar no botão ele envie uma requisição para o servidor e a partir do callback dê um refresh, é isso?

 

:upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está utilizando ajax?

 

Você pode fazer que ao clicar no botão ele envie uma requisição para o servidor e a partir do callback dê um refresh, é isso?

 

:upset:

 

To usando AJAX sim, mas não entendi isso que tu falou. hehehehe

 

Eu to começando com WEB e não manjo muito ainda. Talvez isso que eu queira fazer seja simples, mas não sei como fazer. Se quiser posso postar o código aqui, se isso for ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

To usando AJAX sim, mas não entendi isso que tu falou. hehehehe

 

Eu to começando com WEB e não manjo muito ainda. Talvez isso que eu queira fazer seja simples, mas não sei como fazer. Se quiser posso postar o código aqui, se isso for ajudar.

 

Poste o código para poder dar uma analisada :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o código para poder dar uma analisada :grin:

 

Código da Página que tem o campo Valor Evento.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Forms_frmEventos : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
       if (!Page.IsPostBack)
       {
           Session["novoEvento"] = false;

           ddlCliente.DataTextField = "nome";
           ddlCliente.DataValueField = "idcliente";

           CarregaClientes();

       }

   }


   protected void btnNovo_Click(object sender, EventArgs e)
   {
       newRegistro();
   }

   private void newRegistro()
   {

       txtIDEvento.Text = BLL_Eventos.Evento.BuscaMaxIdEvento().ToString();
       CarregaClientes();
       txtDescricao.Text = string.Empty;
       txtValorTotal.Text = string.Empty;
       txtDataEvento.Text = string.Empty;
       txtLocalCerimonia.Text = string.Empty;
       txtLocalRecepcao.Text = string.Empty;
       txtTextoLivre.Text = string.Empty;

       Session["novoEvento"] = true;
       btnFornecedores.Enabled = false;

       txtDescricao.Focus();

   }

   protected void btnSalvar_Click(object sender, EventArgs e)
   {

       if (txtDescricao.Text.Equals(string.Empty))
       {
           txtDescricao.Focus();
           return;
       }


       if ((bool)Session["novoEvento"] == true)
       {

           InserirRegistro();

       }
       else
       {
           Alterar();

       }

   }

   private void InserirRegistro()
   {

       BLL_Eventos.Evento novo = new BLL_Eventos.Evento();

       novo = PopulaDadosEvento(novo);

       novo.Inserir();
   }

   private void Alterar()
   {
       BLL_Eventos.Evento alterar = new BLL_Eventos.Evento();

       alterar = PopulaDadosEvento(alterar);

       alterar.Alterar();
   }

   protected BLL_Eventos.Evento PopulaDadosEvento(BLL_Eventos.Evento novo)
   {
       novo.IdEvento = Convert.ToInt32(txtIDEvento.Text);
       novo.IdCliente = Convert.ToInt32(ddlCliente.SelectedValue);

       if (!txtDataEvento.Text.Equals(string.Empty))
       {
           novo.DataEvento = Convert.ToDateTime(txtDataEvento.Text);
       }

       novo.Descricao = txtDescricao.Text;
       novo.LocalCerimonia = txtLocalCerimonia.Text;
       novo.LocalRecepcao = txtLocalRecepcao.Text;
       novo.TextoLivre = txtTextoLivre.Text;

       return novo;
   }


   private void CarregaClientes()
   {

       BLL_Eventos.Cliente clie = new BLL_Eventos.Cliente();

       try
       {
           ddlCliente.DataSource = clie.GetAllClientes();
           ddlCliente.DataBind();
       }
       catch (Exception ex)
       {
           throw ex;
       }

   }

   protected void btnBuscar_Click(object sender, EventArgs e)
   {

       if (!txtIDEvento.Text.Equals(string.Empty))
       {
           int idEvento = Convert.ToInt32(txtIDEvento.Text);

           BLL_Eventos.Evento evento = new BLL_Eventos.Evento();

           try
           {
               evento.IdEvento = idEvento;
               evento.GetDadosEvento();

               PopulaDadosTela(evento);
               Session["novoEvento"] = false;
               btnFornecedores.Enabled = true;
           }
           catch (Exception ex)
           {
               throw ex;
           }

       }
   }
   private void PopulaDadosTela(BLL_Eventos.Evento novo)
   {

       txtIDEvento.Text = novo.IdEvento.ToString();
       txtDescricao.Text = novo.Descricao;

       ddlCliente.SelectedValue = novo.IdCliente.ToString();
       ddlCliente.DataBind();

       if (!novo.DataEvento.ToString().Equals(string.Empty))
       {
           txtDataEvento.Text = System.DateTime.Parse(novo.DataEvento.ToString()).ToString("dd/MM/yyyy");
       }

       txtLocalCerimonia.Text = novo.LocalCerimonia;
       txtLocalRecepcao.Text = novo.LocalRecepcao;
       txtValorTotal.Text = novo.ValorTotal.ToString();
       txtTextoLivre.Text = novo.TextoLivre;
   }

   protected void btnFornecedores_Click(object sender, EventArgs e)
   {
       String script = "";

       Session["DescricaoEvento"] = txtDescricao.Text;
       Session["IdEvento"] = txtIDEvento.Text;

       script += "window.open('frmFornecedoresEvento.aspx','', " + "' width=800,heigth=600' );";

       ScriptManager.RegisterStartupScript(this, GetType(), "", script, true);

   }

}

 

Código da PopUp para cadastrar os serviços.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL_Eventos;

public partial class Forms_frmFornecedores : System.Web.UI.Page
{

   public static int IdEvento;

   protected void Page_Load(object sender, EventArgs e)
   {
       if (!Page.IsPostBack)
       {
           Session["novoServicoEvento"] = true;

           txtEvento.Text = Session["DescricaoEvento"].ToString();

           IdEvento = Convert.ToInt32(Session["IdEvento"]);

           CarregaFornecedores();
           CarregaServicos();
       }
   }

   private void CarregaFornecedores()
   {

       ddlFornecedor.DataTextField = "Nome";
       ddlFornecedor.DataValueField = "IdFornecedor";

       Fornecedor fornecedor = new Fornecedor();

       ddlFornecedor.DataSource = fornecedor.GetAllFornecedores();

       ddlFornecedor.DataBind();
       ddlFornecedor.Items.Insert(0, "Selecione...");

   }

   private void CarregaServicosFornecedor()
   {

       ddlServico.DataTextField = "Nome";
       ddlServico.DataValueField = "IdServico";

       ServicosFornecedor sf = new ServicosFornecedor();

       sf.IdFornecedor = Convert.ToInt32(ddlFornecedor.SelectedValue);

       ddlServico.DataSource = sf.GetAllServicosFornecedor();

       ddlServico.DataBind();
       ddlServico.Items.Insert(0, "Selecione...");


   }

   protected void ddlFornecedor_SelectedIndexChanged(object sender, EventArgs e)
   {

       if (!ddlFornecedor.SelectedValue.ToString().Equals("0"))
       {
           CarregaServicosFornecedor();
       }

   }

   protected void btnNovo_Click(object sender, EventArgs e)
   {
       newRegistro();
   }

   private void newRegistro()
   {
       ddlServico.Items.Clear();

       ddlFornecedor.SelectedIndex = 0;
       txtDescricao.Text = string.Empty;
       txtValor.Text = string.Empty;
       Session["novoServicoEvento"] = true;
   }

   protected void btnSalvar_Click(object sender, EventArgs e)
   {

       if (ddlFornecedor.SelectedIndex == 0 )
       {
           return;
       }

       if (ddlServico.SelectedIndex == 0)
       {
           return;
       }

       if ((bool)Session["novoServicoEvento"] == true)
       {

           InserirRegistro();

       }
       else
       {
           Alterar();

       }

       CarregaServicos();

       newRegistro();

   }

   private void InserirRegistro()
   {

       BLL_Eventos.ServicosEvento novo = new BLL_Eventos.ServicosEvento();

       novo = PopulaDadosServicosEvento(novo);

       novo.Inserir();
   }

   private void Alterar()
   {
       BLL_Eventos.ServicosEvento alterar = new BLL_Eventos.ServicosEvento();

       alterar = PopulaDadosServicosEvento(alterar);

       alterar.Alterar();
   }

   protected BLL_Eventos.ServicosEvento PopulaDadosServicosEvento(BLL_Eventos.ServicosEvento novo)
   {
       novo.IdFornecedor = Convert.ToInt32(ddlFornecedor.SelectedValue);
       novo.IdServico = Convert.ToInt32(ddlServico.SelectedValue);
       novo.IdEvento = IdEvento;
       novo.Valor = Convert.ToDecimal(txtValor.Text);
       novo.Descricao = txtDescricao.Text;

       return novo;
   }

   private void CarregaServicos()
   {

       ServicosEvento servicos = new ServicosEvento();

       servicos.IdEvento = IdEvento;

       grvServicos.DataSource = servicos.GetAllServicoEvento();
       grvServicos.DataBind();

   }

   protected void grvServicos_RowCommand(object sender, GridViewCommandEventArgs e)
   {
       Session["novoServicoEvento"] = false;

       ddlFornecedor.SelectedIndex = Convert.ToInt32(grvServicos.Rows[Convert.ToInt32(e.CommandArgument)].Cells[2].Text);

       CarregaServicosFornecedor();

       ddlServico.SelectedIndex = Convert.ToInt32(grvServicos.Rows[Convert.ToInt32(e.CommandArgument)].Cells[0].Text);    

       txtDescricao.Text = Server.HtmlDecode(grvServicos.Rows[Convert.ToInt32(e.CommandArgument)].Cells[5].Text);
       txtValor.Text = grvServicos.Rows[Convert.ToInt32(e.CommandArgument)].Cells[4].Text;

   }

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que azar,

eu não entendo NADA de ASP :{

 

Que azar, eu não sei nada de .NET x__________x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você está abrindo uma popup, poderá acessar a página que a "criou" e alterar o campo pelo id.

 

Olhe este post que fiz há algum tempo que lhe poderá ser útil.

 

O exemplo mostra um iframe, mas a idéia se aplica também para popups.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você está abrindo uma popup, poderá acessar a página que a "criou" e alterar o campo pelo id.

 

Olhe este post que fiz há algum tempo que lhe poderá ser útil.

 

O exemplo mostra um iframe, mas a idéia se aplica também para popups.

 

Como que eu faço referência a minha outra página neste caso?

 

Por que neste exemplo os componentes estão dentro do mesmo arquivo, mas no meu caso são em ASPX diferentes.

 

Como que eu faço referência a minha outra página neste caso?

 

Por que neste exemplo os componentes estão dentro do mesmo arquivo, mas no meu caso são em ASPX diferentes.

 

Agora que eu vi como que funciona. hehehehe

 

Vou ver se consigo aplicar ao meu problema, se conseguir posto aqui e, se não conseguir também :D

 

Como você está abrindo uma popup, poderá acessar a página que a "criou" e alterar o campo pelo id.

 

Olhe este post que fiz há algum tempo que lhe poderá ser útil.

 

O exemplo mostra um iframe, mas a idéia se aplica também para popups.

 

Não consegui fazer funcionar =/

 

A estrutura que eu tenho é a seguinte.

 

frmEventos.aspx que chama a tela frmFornecedoresEventos.aspx da seguinte forma:

 

  script += "window.open('frmFornecedoresEvento.aspx','', " + "' width=800,heigth=600' );";
  ScriptManager.RegisterStartupScript(this, GetType(), "", script, true);

 

Na tela frmFornecedoresEventos.aspx cada vez que for incluído um registro, quero atualizar o campo Valor Evento que fica na tela frmEventos.aspx.

 

Não sei se com o script que tu colocou no post eu consigo fazer isso. Na verdade eu não manjo quase nada de JS. O que eu tentei foi o seguinte.

 

Coloquei esses dois JS no frmFornecedoresEventos.aspx.

 

function sendDataToParentWindow() {

//txtValorTotal.Text é o campo de destino na página frmEventos.aspx
//txtValor.Text é o campo de origem na página frmFornecedoresEventos.aspx

  window.parent.document.getElementById('txtValorTotal.Text').innerHTML = document.getElementById('txtValor.Text').value;
      }

      function sendDataToIFrame() {
          document.getElementById('frmEventos.aspx').contentDocument.getElementById('txtValorTotal').innerHTML = document.getElementById('txtValor').value;
      }

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Não sei se com o script que tu colocou no post eu consigo fazer isso. Na verdade eu não manjo quase nada de JS. O que eu tentei foi o seguinte.

 

 

O script que eu postei é apenas um modelo de como fazer a comunicação entre um documento e uma popup ou iframe.

Para alterá-lo é preciso conhecer o básico de javascript...

 

Seu input realmente se chama "txtValorTotal.Text" ? Ou se chama txtValorTotal e você quer acessar a propriedade text ? :wacko:

Parece-me que nem o getElementById você usou corretamente em:

window.parent.document.getElementById('txtValorTotal.Text').innerHTML

 

Segundo as necessidades que você descreveu, você precisa alterar um campo no documento que deu origem a popup, e isso está descrito claramente no exemplo.

Minha dica é que você estude melhor o exemplo e entenda o que faz cada linha do script, com isso você certamente conseguirá alterá-lo para a sua necessidade.

 

Como você disse que sabe pouco de javascript segue o link de um bom tutorial para iniciantes: w3schools

 

Caso a dúvida persista, envie trechos do formulário em html para que possamos visualizar a estrutura das tags (name, id) e assim lhe auxiliar. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O script que eu postei é apenas um modelo de como fazer a comunicação entre um documento e uma popup ou iframe.

Para alterá-lo é preciso conhecer o básico de javascript...

 

Seu input realmente se chama "txtValorTotal.Text" ? Ou se chama txtValorTotal e você quer acessar a propriedade text ? :wacko:

Parece-me que nem o getElementById você usou corretamente em:

window.parent.document.getElementById('txtValorTotal.Text').innerHTML

 

Segundo as necessidades que você descreveu, você precisa alterar um campo no documento que deu origem a popup, e isso está descrito claramente no exemplo.

Minha dica é que você estude melhor o exemplo e entenda o que faz cada linha do script, com isso você certamente conseguirá alterá-lo para a sua necessidade.

 

Como você disse que sabe pouco de javascript segue o link de um bom tutorial para iniciantes: w3schools

 

Caso a dúvida persista, envie trechos do formulário em html para que possamos visualizar a estrutura das tags (name, id) e assim lhe auxiliar. :thumbsup:

 

Eu 'txtValorTotal.Text' mas testei também utilizando sem o ".text" e não funcionou também. O seu exemplo não funciona caso as páginas sejam abertas em janelas ou abas diferentes. Segundo o que um colega me falou, o js atua apenas em uma instância do navegador, por isso que não funciona. Mas se isso procede não sei.

 

Eu mudei a forma como estou fazendo o fluxo, e resolvi este problema, ficou inclusive melhor que utilizando popup.

 

Obrigado pela ajuda.

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.