Usuário com melhor resposta
Passando valor da variável para outras páginas!

Pergunta
-
Boa tarde!
Eu tenha um gridview com um botão visualizar!"
Quando clicar nete botão todas as informações do cliente que contém na linha terá que aparecer em uma outra página.
Então vamos ao que eu tenho hoje:
na página cad_cli.aspx tenho o gridview com suas 7 colunas, quando clico em visualizar pego a posição da linha e passo para um parametro o id_cliente.
Agora preciso abrir a outra página já com tdas as informações do mesmo. Como fazer?
if (e.CommandName == "visu")
{
int row = Convert.ToInt32(e.CommandArgument.ToString());
int idcliente = (int)GridView1.DataKeys[row].Value;
Cadastro_Cli SelectCli = new Cadastro_Cli();
string idcli = Convert.ToString(idcliente);
bool conn = SelectCli.SelectClient(idcli);
if (conn == true)
{
String script = "";
script += "<script language='JavaScript'>";
script += "window.open('show_cliente.aspx','', " +
"'resizable=no, menubar=no,scrollbars=no," +
"width=450,height=450')";
script += "</script>";
ClientScript.RegisterClientScriptBlock(GetType(),
"client", script);
}
}Podem me ajudar por gentileza?
Respostas
-
Mr. não consegui =(
pq assim. nesse meu grid tenho a coluna Excluir e Visualizar. então eu passo por RowCommand e vc estapassando pelo RowDataBound.
Tá dificiiil =.(
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title></title> <script type="text/javascript"> function PopupCentralizado(url, largura, altura) { var widthAtual = screen.width; var heightAtual = screen.height; var meioWidth = widthAtual / 2; var meioHeight = heightAtual / 2; var alturaJanela = altura / 2; var larguraJanela = largura / 2; var meioHeightCorrigido = meioHeight - alturaJanela - 30; var meioWidthCorrigido = meioWidth - larguraJanela; window.open(url, '', 'height=' + altura + ', width=' + largura + ', top=' + meioHeightCorrigido + ', left=' + meioWidthCorrigido + ',scrollbars=1'); } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView runat="server" ID="grvClientes" AutoGenerateColumns="false" OnRowCommand="grvClientes_RowCommand"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:LinkButton Text="Excluir" ID="lkExcluir" CommandName="Excluir" CommandArgument='<%# Eval("IDCliente") %>' runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:LinkButton Text="Visualizar" ID="lkVisualizar" CommandName="Visualizar" CommandArgument='<%# Eval("IDCliente") %>' runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Nome" HeaderText="Nome" /> </Columns> </asp:GridView> </div> </form> </body> </html>
.cs
using System; using System.Data; using System.Linq; using System.Collections.Generic; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication1 { public class Cliente { public int IDCliente { get; set; } public string Nome { get; set; } } public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Criando lista de clientes ficticios List<Cliente> lista = new List<Cliente> { new Cliente { IDCliente = 1, Nome = "Roberto" }, new Cliente { IDCliente = 2, Nome = "Julio" }, new Cliente { IDCliente = 3, Nome = "Ingrid" }, new Cliente { IDCliente = 4, Nome = "Vitor" } }; //Atribuindo ao GridView grvClientes.DataSource = lista; grvClientes.DataBind(); } protected void grvClientes_RowCommand(object sender, GridViewCommandEventArgs e) { switch (e.CommandName) { case "Excluir": //Sua rotina para excluir aqui break; case "Visualizar": ClientScript.RegisterClientScriptBlock(GetType(), "script", "<script type='text/javascript'>PopupCentralizado('MinhaPagina?idCliente=" + e.CommandArgument + "',700,600)</script>"); break; } } } }
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Marcado como Resposta Douglas Bertelli terça-feira, 29 de maio de 2012 17:34
Todas as Respostas
-
Douglas você pode tentar atribuir este ID do cliente em uma Session e recuperar na pagina "show_cliente.aspx" ou passar via querystring, veja este link la em baixo quando ele codifica o botão vizualizar:
http://comunidade.codificando.net/profiles/blogs/aplicacoes-em-n-camadas-com-4Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/ -
Cara tem muitas maneiras de fazer isso, vou passar uma maneira utilizando js.
primeiro em sua papop, vc teria o seguinte cód..
Obs; atenção no conteúdo em negrito, são eles que realizará a proeza de passagem de parametros.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="papop.aspx.cs" Inherits="papop" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script> function PopularFormPapop() { var valor = window.opener.CarregarValores(); //chama função na página pai document.forms[0].txtRecebeValor.value = valor; //seta valor no conteúdo da papop. } </script> </head> <body onload="PopularFormPapop();"> <form id="form1" runat="server"> <input type="text" id="txtRecebeValor" name="txtRecebeValor" /> </form> </body> </html>
Página Pai.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script> function CarregarValores() { //varrer formulario passando o que desejar, lembrando que vc pode até mesmo serializar o form e passar o formulário todo!
//o seu conteúdo para a papop. var vlr1 = document.forms[0].txtValor1.value; return vlr1; } function Abrir() {
//abrir papop ao clicar no btn. window.open("papop.aspx", "Pegar Valor da página Default", 'width=500,height=500'); } </script> </head> <body> <form id="form1" runat="server"> <input type="text" id="txtValor1" name="txtValor1" /> </form> <button onclick="Abrir();"> Passar Valor agora! </button> </body> </html>
espero ter ajudado.
Atenciosamenet.
- Editado Romy Moura segunda-feira, 28 de maio de 2012 20:34
-
Oi boa noite!
Obrigado pelo retorno, porém olha a minha atual situação:
Na página pai tenho:
if (e.CommandName == "visu")
{
int row = Convert.ToInt32(e.CommandArgument.ToString());
int idcliente = (int)GridView1.DataKeys[row].Value;
Cadastro_Cli SelectCli = new Cadastro_Cli();
string idcli = Convert.ToString(idcliente);
bool conn = SelectCli.SelectClient(idcli);
if (conn == true)
{
string url;
url = "show_cliente.aspx?id_cliente=" + idcli;
Response.Redirect(url);
}Página filho:
int idcliente = Convert.ToInt32(Request.QueryString["id_cliente"]);
Cadastro_Cli SelectCli = new Cadastro_Cli();
string idcli = Convert.ToString(idcliente);
bool conn = SelectCli.SelectClient(idcli);
if (conn == true)
{
lblCodCli.Text = Convert.ToString(SelectCli.Codcli);
lblCNPJ.Text = SelectCli.Cnpj;
lblR_social.Text = SelectCli.R_social;
lbltipodeconta.Text = SelectCli.Tipodeconta;
lblfantasia.Text = SelectCli.Fantasia;
lblpais.Text = SelectCli.Pais;etc... etc...
}}
enfim.. passo somente o id_cliente por querystring, recupera na page filho e faço a query para preencher minhas lbls da tela. Ok legal.
Agora como fazer isso abrir em POP-Up? pq antes eu fazia assim na página pai:
String script = "";
script += "<script language='JavaScript'>";
script += "window.open('show_cliente.aspx','', " +
"'resizable=no, menubar=no,scrollbars=no," +
"width=420,height=480')";
script += "</script>";
ClientScript.RegisterClientScriptBlock(GetType(),
"client", script);Porém não sabia passar a querystring =(
-
Olá Douglas, vc pode criar um campo hiddenfield ou guardar em session.
Caso vc utiliza meu exemplo guarde o id em um hiddenfield para recuperar o id que vc clicou certo.
Caso utilize uma session, não precisa usar meu exemplo basta utilizar o valor da session e chamar metodos para popular sua papop, no caso seria no load da página papop certo.
Página filho: int idcliente = Convert.ToInt32(valor hiddenfield ou session["id"]); Cadastro_Cli SelectCli = new Cadastro_Cli(); string idcli = Convert.ToString(idcliente); bool conn = SelectCli.SelectClient(idcli); if (conn == true) { lblCodCli.Text = Convert.ToString(SelectCli.Codcli); lblCNPJ.Text = SelectCli.Cnpj; lblR_social.Text = SelectCli.R_social; lbltipodeconta.Text = SelectCli.Tipodeconta; lblfantasia.Text = SelectCli.Fantasia; lblpais.Text = SelectCli.Pais; etc... etc...
Ficou claro? qualquer dúvida só falar!
-
Veja este exemplo usando QueryString
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript"> function PopupCentralizado(url, largura, altura) { var widthAtual = screen.width; var heightAtual = screen.height; var meioWidth = widthAtual / 2; var meioHeight = heightAtual / 2; var alturaJanela = altura / 2; var larguraJanela = largura / 2; var meioHeightCorrigido = meioHeight - alturaJanela - 30; var meioWidthCorrigido = meioWidth - larguraJanela; window.open(url, '', 'height=' + altura + ', width=' + largura + ', top=' + meioHeightCorrigido + ', left=' + meioWidthCorrigido + ',scrollbars=1'); return false; } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView runat="server" ID="grvClientes" AutoGenerateColumns="false" OnRowDataBound="grvClientes_RowDataBound"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:LinkButton Text="Vizualizar" ID="lkVisualizar" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Nome" HeaderText="Nome" /> </Columns> </asp:GridView> </div> </form> </body> </html>
.cs
using System; using System.Collections.Generic; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication1 { public class Cliente { public int IDCliente { get; set; } public string Nome { get; set; } } public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Criando lista de clientes ficticios List<Cliente> lista = new List<Cliente> { new Cliente { IDCliente = 1, Nome = "Roberto" }, new Cliente { IDCliente = 2, Nome = "Julio" }, new Cliente { IDCliente = 3, Nome = "Ingrid" }, new Cliente { IDCliente = 4, Nome = "Vitor" } }; //Atribuindo ao GridView grvClientes.DataSource = lista; grvClientes.DataBind(); } protected void grvClientes_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { //Recuperando LinkButton e atribuindo JavaScript LinkButton lk = (LinkButton)e.Row.FindControl("lkVisualizar"); lk.OnClientClick = string.Format("return PopupCentralizado('MinhaPagina?idCliente={0}',700,600)", DataBinder.Eval(e.Row.DataItem, "IDCliente")); } } } }
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/ -
Você também pode passar por uma variável de Session["suaVariavel"] e na página que você precisar recuperar o valor recure e remova da Session e armazene no ViewState["suaVariável"].
Para manipular o valor na variável de sessão/ViewState você pode cria uma propriedade na página. Fica mais limpo o código e fácil de utilizar.
Abraço.
-
Se puder, evite o uso demasiado de Session para não sobrecarregar seu servidor.
Utilize Hidden ou ViewState, se precisar recuperar um valor após um postback na mesma página em que você está. Se precisar mudar de página, aí ou vc faz via queryString ou session mesmo.
-
-
Douglas tenho funcionando algo parecido com o que vc quer, faço como o Romy falou, tenho uma grid e nela um commando(select) qdo clicado abro um pop-up com os dados que o usuário clicou, com isso eu guardo os dados em campos hidden tenho esse script
function ff_reload() { window.opener.document.forms[0].vales.value = document.frmAlteracao.TotalVales.value; window.opener.document.forms[0].valores.value = document.frmAlteracao.Totalpagar.value; window.opener.document.forms[0].sequencial.value = document.frmAlteracao.sequencialusuario.value; window.opener.document.forms[0].matricula.value = document.frmAlteracao.matriculausuario.value; window.opener.document.forms[0].diario.value = 1; window.opener.document.forms[0].alterou.value = 1; window.opener.document.forms[0].fixo.value = 1; window.opener.document.forms[0].CMD_Calcular.click(); window.close() }
onde os campos .value são campos hiddenJunior
-
Use esse método para chamar a popup
Javascript
function openWindow(altura, largura, url, opener)
{
var maximizar = altura >= screen.availHeight || largura >= screen.availWidth;
if (maximizar)
{
altura = screen.availHeight;
largura = screen.availWidth;
}
var scrY = (screen.availHeight - altura) / 2;
var scrX = (screen.availWidth - largura) / 2;
if (maximizar && isChrome)
{
altura -= 68;
largura -= 20;
}
var momentoAtual = new Date();
opener = typeof opener == 'undefined' || opener == null ? window : opener;
opener.open(url, "popup_" + momentoAtual.getMilliseconds(), 'scrollbars=1, width=' + largura + ',height=' + altura +
',left=' + scrX + ',top=' + scrY);
return false;
}
para abrir : openWindow(600, 800, "../PaginaFilho.aspx?idCliente=idCliente");Desenvolva!!!
-
Mr. não consegui =(
pq assim. nesse meu grid tenho a coluna Excluir e Visualizar. então eu passo por RowCommand e vc estapassando pelo RowDataBound.
Tá dificiiil =.(
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title></title> <script type="text/javascript"> function PopupCentralizado(url, largura, altura) { var widthAtual = screen.width; var heightAtual = screen.height; var meioWidth = widthAtual / 2; var meioHeight = heightAtual / 2; var alturaJanela = altura / 2; var larguraJanela = largura / 2; var meioHeightCorrigido = meioHeight - alturaJanela - 30; var meioWidthCorrigido = meioWidth - larguraJanela; window.open(url, '', 'height=' + altura + ', width=' + largura + ', top=' + meioHeightCorrigido + ', left=' + meioWidthCorrigido + ',scrollbars=1'); } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView runat="server" ID="grvClientes" AutoGenerateColumns="false" OnRowCommand="grvClientes_RowCommand"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:LinkButton Text="Excluir" ID="lkExcluir" CommandName="Excluir" CommandArgument='<%# Eval("IDCliente") %>' runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:LinkButton Text="Visualizar" ID="lkVisualizar" CommandName="Visualizar" CommandArgument='<%# Eval("IDCliente") %>' runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Nome" HeaderText="Nome" /> </Columns> </asp:GridView> </div> </form> </body> </html>
.cs
using System; using System.Data; using System.Linq; using System.Collections.Generic; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication1 { public class Cliente { public int IDCliente { get; set; } public string Nome { get; set; } } public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Criando lista de clientes ficticios List<Cliente> lista = new List<Cliente> { new Cliente { IDCliente = 1, Nome = "Roberto" }, new Cliente { IDCliente = 2, Nome = "Julio" }, new Cliente { IDCliente = 3, Nome = "Ingrid" }, new Cliente { IDCliente = 4, Nome = "Vitor" } }; //Atribuindo ao GridView grvClientes.DataSource = lista; grvClientes.DataBind(); } protected void grvClientes_RowCommand(object sender, GridViewCommandEventArgs e) { switch (e.CommandName) { case "Excluir": //Sua rotina para excluir aqui break; case "Visualizar": ClientScript.RegisterClientScriptBlock(GetType(), "script", "<script type='text/javascript'>PopupCentralizado('MinhaPagina?idCliente=" + e.CommandArgument + "',700,600)</script>"); break; } } } }
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Marcado como Resposta Douglas Bertelli terça-feira, 29 de maio de 2012 17:34
-
Oi Romy, boa tarde!
Fiz um teste aqui e funcionou. Porém na minha página real de projeto estou com o seguinte problema:
var vlr1 = document.forms[0].txtValor1.value;
Usando o componente HiddenField quando coloco document.forms[0]. ele não encontra =*(
-
Pessoal.. obrigado a todos.. quero dizer q funcionou tdo certinho =) apesar da ajuda de todos acabei usando a solução do Vitor Mendes
Ficou muito legal, uma pena que o browser bloqueia né, eu ia fazer com o jQuery com modal,mas tb nao soube como fazer no Vs, sei apenas fazer em sites.Cara onde vc estuda isso:
ClientScript.RegisterClientScriptBlock(GetType(), "script", "<script type='text/javascript'>PopupCentralizado('show_cliente.aspx?id_cliente=" + idcli + "',700,600)</script>");Livro de Java com ASpx?
Eu estou comprando um livro de aspx com Ajax e jquery, acho que já ajuda né.
Abraço!
-
Pessoal.. obrigado a todos.. quero dizer q funcionou tdo certinho =) apesar da ajuda de todos acabei usando a solução do Vitor Mendes
Ficou muito legal, uma pena que o browser bloqueia né, eu ia fazer com o jQuery com modal,mas tb nao soube como fazer no Vs, sei apenas fazer em sites.Cara onde vc estuda isso:
ClientScript.RegisterClientScriptBlock(GetType(), "script", "<script type='text/javascript'>PopupCentralizado('show_cliente.aspx?id_cliente=" + idcli + "',700,600)</script>");Livro de Java com ASpx?
Eu estou comprando um livro de aspx com Ajax e jquery, acho que já ajuda né.
Abraço!
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/