none
passar valor aspx para javascript RRS feed

  • Pergunta

  • OLA PESSOAL TENHO UMA FUNÇÃO EM JAVA ONDE EU APENAS ABRO OUTRO FORMULARIO COMO POPUP ASSIM QUANDO CLICO NO BOTÃO INCLUIR:

      <script language='javascript' type='text/javascript'>

     

            function Abrepop() 

            {

                window.open('Frmincluirusers.aspx', '', 'top=150,left=300,width=810,height=450', 'resizable=no');

            }

        </script>

    E TAMBEM NESTA TELA TENHO UM DATALIST QUE CARREGA OS USUARIOS DO SISTEMA GOSTARIA DE SABER COMO POSSO PASSAR ID DO USUARIO QUANDO CLICAR NO DATALIST PARA PARA O FORM QUE EU ABRO ATRAVES DO window.open eu executo a function no onclientclick="javascript:Abrepop()" do aspx

    gostaria de passar o id do usuario para javascript carrear uma variavel ,ai abro o outro form e recupero este valor no outro form e passo pro methodo.

    alguem sabe como fazer

    meu code aspx do datalist:

      <asp:DataList ID="grdusuario" runat="server" Width="77%" Height="88px">

                                <HeaderTemplate>

                                    <table cellpadding="0" cellspacing="0" border="0" style="border-color: #000000; font-size: small;

                                        width: 100%;">

                                        <tr class="HeaderGrid">

                                            <td width="10%">

                                                ID

                                            </td>

                                            <td width="20%">

                                                Nome

                                            </td>

                                            <td width="20%">

                                                Função

                                            </td>

                                            <td>

                                                Status Conta

                                            </td>

                                        </tr>

                                </HeaderTemplate>

                                <ItemTemplate>

                                    <tr class="formataitemtemplate">

                                        <td>

                                            <%#Eval("chave") %>

                                        </td>

                                        <td>

                                            <%# DataBinder.Eval(Container.DataItem,"nome")%>

                                        </td>

                                        <td>

                                            <%#Eval("funcao") %>

                                        </td>

                                        <td>

                                            <%#Eval("habilit") %>

                                        </td>

                                    </tr>

                                </ItemTemplate>

                                <AlternatingItemTemplate>

                                    <tr class="formataitemtemalternado">

                                        <td>

                                            <%#Eval("chave") %>

                                        </td>

                                        <td>

                                            <%# DataBinder.Eval(Container.DataItem,"nome")%>

                                        </td>

                                        <td>

                                            <%#Eval("funcao") %>

                                        </td>

                                        <td>

                                            <%#Eval("habilit")%>

                                        </td>

                                    </tr>

                                </AlternatingItemTemplate>

                                <FooterTemplate>

                                    </table>

                                </FooterTemplate>

                            </asp:DataList>

    domingo, 31 de julho de 2011 03:34

Respostas

  • A diferença entre Session[""] e Application("") é que a Session é criada quando um usuário acessa sua aplicação e só pode ser enxergada por ele mesmo, mais ninguém enxerga a nao ser ele, o Application("") é como se fosse um Session, mais só que compartilhada, qualquer usuário vai pode resgatar o valor do Application, por default uma Session dura 20 min de acordo com a documentação da MSDN:
    http://msdn.microsoft.com/en-us/library/h6bb9cz9.aspx

    O Application não sei te informa qual o tempo de duração dele, pois funciona como se fosse um cache da aplicação.
    Vitor Mendes | Seu feedback é muito importante para todos!
    segunda-feira, 1 de agosto de 2011 18:53

Todas as Respostas

  • Bom você pode colocar um LinkButton no seu DataList, depois no evento ItemDataBound recuperar ele e adicionar um atribuindo, no caso a função em javascript, segue um exemplo funcionando:

    .aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication5.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 language="javascript" type="text/javascript">
        function popup(pagina, largura, altura) {
          //pega a resolução do visitante
          w = screen.width;
          h = screen.height;
    
          //divide a resolução por 2, obtendo o centro do monitor
          meio_w = w / 2;
          meio_h = h / 2;
    
          //diminui o valor da metade da resolução pelo tamanho da janela, fazendo com q ela fique centralizada
          altura2 = altura / 2;
          largura2 = largura / 2;
          meio1 = meio_h - altura2;
          meio2 = meio_w - largura2;
    
          //abre a nova janela, já com a sua devida posição
          //window.open(pagina, '', "status=no , scrollbars=no ,width=800, height=600 , top=0 , left=0");
          open(pagina, '', 'height=' + altura + ', width=' + largura + ', top=' + meio1 + ', left=' + meio2 + ',scrollbars=1,menubar=0');
        }
      </script>
    </head>
    <body>
      <form id="form1" runat="server">
      <div>
        <asp:DataList ID="grdusuario" runat="server" Width="77%" Height="88px" OnItemDataBound="grdusuario_ItemDataBound">
          <HeaderTemplate>
            <table cellpadding="0" cellspacing="0" border="0" style="border-color: #000000; font-size: small;
              width: 100%;">
              <tr class="HeaderGrid">
                <td width="10%">
                </td>
                <td width="10%">
                  ID
                </td>
                <td width="20%">
                  Nome
                </td>
                <td width="20%">
                  Função
                </td>
                <td>
                  Status Conta
                </td>
              </tr>
          </HeaderTemplate>
          <ItemTemplate>
            <tr class="formataitemtemplate">
              <td>
                <asp:LinkButton ID="lkItemTemplate" runat="server">Detalhes</asp:LinkButton>
              </td>
              <td>
                <%#Eval("chave") %>
              </td>
              <td>
                <%# DataBinder.Eval(Container.DataItem,"nome")%>
              </td>
              <td>
                <%#Eval("funcao") %>
              </td>
              <td>
                <%#Eval("habilit") %>
              </td>
            </tr>
          </ItemTemplate>
          <AlternatingItemTemplate>
            <tr class="formataitemtemalternado">
              <td>
                <asp:LinkButton ID="lkAlternatingItemTemplate" runat="server">Detalhes</asp:LinkButton>
              </td>
              <td>
                <%#Eval("chave") %>
              </td>
              <td>
                <%# DataBinder.Eval(Container.DataItem,"nome")%>
              </td>
              <td>
                <%#Eval("funcao") %>
              </td>
              <td>
                <%#Eval("habilit")%>
              </td>
            </tr>
          </AlternatingItemTemplate>
          <FooterTemplate>
            </table>
          </FooterTemplate>
        </asp:DataList>
      </div>
      </form>
    </body>
    </html>
    
    
    .cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    
    namespace WebApplication5
    {
      public partial class WebForm1 : System.Web.UI.Page
      {
        protected void Page_Load(object sender, EventArgs e)
        {
          if (!IsPostBack)
          {
            DataTable dt = new DataTable();
            dt.Columns.Add("chave", typeof(string));
            dt.Columns.Add("nome", typeof(string));
            dt.Columns.Add("funcao", typeof(string));
            dt.Columns.Add("habilit", typeof(string));
    
            //Valores
            dt.Rows.Add("1", "1", "1", "1");
            dt.Rows.Add("2", "2", "2", "2");
            dt.Rows.Add("3", "3", "3", "3");
    
    
            grdusuario.DataSource = dt;
            grdusuario.DataBind();
          }
        }
    
        protected void grdusuario_ItemDataBound(object sender, DataListItemEventArgs e)
        {
          if (e.Item.ItemType == ListItemType.Item)
          {
            DataRowView row = (DataRowView)e.Item.DataItem;
            string _chave = row["chave"].ToString();
            (e.Item.FindControl("lkItemTemplate") as LinkButton).Attributes.Add("OnClick", "popup('frmPagina.aspx?chave=" + _chave + "',800,600);");
          }
    
          if (e.Item.ItemType == ListItemType.AlternatingItem)
          {
            DataRowView row = (DataRowView)e.Item.DataItem;
            string _chave = row["chave"].ToString();
            (e.Item.FindControl("lkAlternatingItemTemplate") as LinkButton).Attributes.Add("OnClick", "popup('frmPagina.aspx?chave=" + _chave + "',800,600);");
          }
        }
      }
    }
    

    Referencia:
    http://msdn.microsoft.com/pt-br/library/system.web.ui.webcontrols.datalist.itemdatabound(v=vs.80).aspx
    Vitor Mendes | Seu feedback é muito importante para todos!
    segunda-feira, 1 de agosto de 2011 01:04
  • com seu codigo me gerou este erro

     

    Unable to cast object of type 'System.Data.Common.DataRecordInternal' to type 'System.Data.DataRowView'.

     

     

    Line 79:     if (e.Item.ItemType == ListItemType.Item)
    Line 80:     {
    Line 81:       DataRowView row = (DataRowView)e.Item.DataItem;
    Line 82:       string _chave = row["chave"].ToString();
    Line 83:       (e.Item.FindControl("lkItemTemplate") as LinkButton).Attributes.Add("OnClick", "popup('frmPagina.aspx?chave=" + _chave + "',800,600);");

    n/ao sei o que é

    segunda-feira, 1 de agosto de 2011 02:07
  • Que estranho, esse código que postei acima testei aqui e funcionou 100%, você chegou a criar o evento ItemDataBound no DataList ou você simplesmente copiou e colou por cima ?? a sua fonte de dados não esta trazendo valores errado ??
    Vitor Mendes | Seu feedback é muito importante para todos!
    segunda-feira, 1 de agosto de 2011 02:52
  • cara a principio eu so ignorei esta parte sua :

     if (!IsPostBack)
     {
     DataTable dt = new DataTable();
     dt.Columns.Add("chave", typeof(string));
     dt.Columns.Add("nome", typeof(string));
     dt.Columns.Add("funcao", typeof(string));
     dt.Columns.Add("habilit", typeof(string));
    
     //Valores
     dt.Rows.Add("1", "1", "1", "1");
     dt.Rows.Add("2", "2", "2", "2");
     dt.Rows.Add("3", "3", "3", "3");
    
    
     grdusuario.DataSource = dt;
     grdusuario.DataBind();


    pois já tenho o meu methodo que popula o data. consegui resolver de outra forma 

    mas com tuas dicas assim:
    eu entro no evento ItemDataBound e pego o LinkButton
    protected void grdusuario_ItemDataBound(object sender, DataListItemEventArgs e) {

    (e.Item.FindControl("lkItemTemplate") as LinkButton).Attributes.Add("OnClick", "popup( variavel
    );");

    no meu java criei uma var e passo via url
    function popup ( chave )
    {
    open(pagina.aspx?'+ chave +', '', 'height=' + altura + ', width=' + largura + ', top=' + meio1 + ', left=' + meio2 + ',scrollbars=1,menubar=0'); }
    funcionou mas minha duvida é a seguinte como eu posso recuperar o valor da variavel que criei no javascript
    no Page_load do code aspx sem passar por url tem como .

    eu to usando o Request("chave").


    segunda-feira, 1 de agosto de 2011 16:48
  • cara a principio eu so ignorei esta parte sua :

     if (!IsPostBack)
      {
      DataTable dt = new DataTable();
      dt.Columns.Add("chave", typeof(string));
      dt.Columns.Add("nome", typeof(string));
      dt.Columns.Add("funcao", typeof(string));
      dt.Columns.Add("habilit", typeof(string));
    
      //Valores
      dt.Rows.Add("1", "1", "1", "1");
      dt.Rows.Add("2", "2", "2", "2");
      dt.Rows.Add("3", "3", "3", "3");
    
    
      grdusuario.DataSource = dt;
      grdusuario.DataBind();

    Você esta carregando seu DataSource do DataList de que maneira ?? um list ?? uma consulta linq ?? um dataset ?? datatable ??
    Vitor Mendes | Seu feedback é muito importante para todos!
    segunda-feira, 1 de agosto de 2011 16:56
  • Consegui simular o erro, recupere o valor no seu evento ItemDataBound desta maneira:

    protected void grdusuario_ItemDataBound(object sender, DataListItemEventArgs e)
    {
      if (e.Item.ItemType == ListItemType.Item)
      {
        string _chave = DataBinder.Eval(e.Item.DataItem, "chave").ToString();
        (e.Item.FindControl("lkItemTemplate") as LinkButton).Attributes.Add("OnClick", "popup('frmPagina.aspx?chave=" + _chave + "',800,600);");
      }
    
      if (e.Item.ItemType == ListItemType.AlternatingItem)
      {
        string _chave = DataBinder.Eval(e.Item.DataItem, "chave").ToString();
        (e.Item.FindControl("lkAlternatingItemTemplate") as LinkButton).Attributes.Add("OnClick", "popup('frmPagina.aspx?chave=" + _chave + "',800,600);");
      }
    }
    

     
    Vitor Mendes | Seu feedback é muito importante para todos!
    • Sugerido como Resposta Vitor Mendes segunda-feira, 1 de agosto de 2011 17:29
    segunda-feira, 1 de agosto de 2011 17:09
  • bleza como eu faço pra recuperar na outra pagina que estou abrindo com open java o valor que passei para variavel do java sem ser por url tem como .
    segunda-feira, 1 de agosto de 2011 17:30
  • bleza como eu faço pra recuperar na outra pagina que estou abrindo com open java o valor que passei para variavel do java sem ser por url tem como .
    A solução que postei acima é para passar valores via QueryString:

    if (Request.QueryString["chave"] != null)
    {
      string _chave = Request.QueryString["chave"].ToString();
    }
    


    A outra maneira seria usar Session criando um evento Click para o LinkButton, recuperar o valor chave e registrar em Session.


    Vitor Mendes | Seu feedback é muito importante para todos!
    segunda-feira, 1 de agosto de 2011 17:56
  • bleza ok tu sabe qual a diferença ou  qual a duração de uma session["valor"] ou um Application("valor")

    para persistir dados.

     

    segunda-feira, 1 de agosto de 2011 18:29
  • A diferença entre Session[""] e Application("") é que a Session é criada quando um usuário acessa sua aplicação e só pode ser enxergada por ele mesmo, mais ninguém enxerga a nao ser ele, o Application("") é como se fosse um Session, mais só que compartilhada, qualquer usuário vai pode resgatar o valor do Application, por default uma Session dura 20 min de acordo com a documentação da MSDN:
    http://msdn.microsoft.com/en-us/library/h6bb9cz9.aspx

    O Application não sei te informa qual o tempo de duração dele, pois funciona como se fosse um cache da aplicação.
    Vitor Mendes | Seu feedback é muito importante para todos!
    segunda-feira, 1 de agosto de 2011 18:53
  • ESCLARECEU MINHAS DUVIDAS VALEU
    segunda-feira, 1 de agosto de 2011 18:58