Avatar billede pagh80 Nybegynder
20. oktober 2004 - 15:22 Der er 8 kommentarer og
1 løsning

Brug af window.open? Vil gerne sende data til nyt popup vindue

Hej. Jeg har kæmpet med dette i et stykke tid, og jeg har ikke meget kendskab til javascript, så jeg håber at nogle her kan hjælpe.
Jeg skal lave en side, som lister brugere i et firma. Når jeg så trykker på en knap, skal et nyt vindue åbnes og firmanavnet skal sendes med som en variabel, som jeg skal kunne putte i en C# string.

Selve programmet er kodet i C# ved hjælp af microsoft visual studio, men jeg bruger javascript til at åbne et nyt vindue, da jeg ikke har kunne finde et eksempel i C#.

Det optimale ville være hvis en kunne give mig et godt kode eksempel på hvordan man åbner et nyt popup vindue og sender en string variabel med. Og et eksempel på hvordan man modtager denne variabel og overfører den til en C# string variabel.
Siderne er af typen webforms.aspx
Avatar billede roenving Novice
20. oktober 2004 - 15:28 #1
F.eks.

window.open('dinSide.aspx?'+document.formNavn.firmaFelt.value,'VisFirma','height=400,width=300,status=no')

-- eller bare:

<form action='dinSide.aspx' method='post' target="_blank" onsubmit="this.action+='?firma='+this.firmaFelt.value">

-- og hvis du sender formen har du nok ikke engang brug for at sætte get-variablen, for så kan du jo server-side aflæse den fra formfeltet !-)
Avatar billede noden Nybegynder
20. oktober 2004 - 15:56 #2
Du kunne også vælge, på din side at benytte sessioncookies til at gemme værdien i!
Dette er lidt mere sikkert hvis du skal overføre fortrolige data.
Jeg ved ikke om det er et krav for dig at skulle benytte JavaScript?
Men ovenstående burde løsning fra Roenving burde virke!
Avatar billede pagh80 Nybegynder
20. oktober 2004 - 16:05 #3
jeg kan først prøve det af i morgen, men jeg kan ikke lige gennemskue hvordan jeg modtager this.firmaFelt.value i min popup .aspx side, og smider den over i en C# string.

endnu et spørgsmål:
Hvordan fungere dette?
<form action='dinSide.aspx' method='post' target="_blank" onsubmit="this.action+='?firma='+this.firmaFelt.value">

min nye aspx side skal først oprettes når jeg trykker på en knap.
Avatar billede roenving Novice
20. oktober 2004 - 16:12 #4
Når du laver metoden med at sætte værdien på kaldet, vil det være en get-variabel, som du kan hendte fra en eller anden server-variabel (i klassisk asp er request-et-eller-andet)

Og jeg vil anbefale at du simpelthen sender en form, for så kan du sende værdien post, det giver en meget pænere url til popuppen ...

<form action='dinSide.aspx' method='post' target="_blank">
  <input type="text" name="firmaFelt">
  <input type="submit" value="Vis Firma">
</form>

-- så vil du kunne hente værdien server-side som en post-variabel (også noget request-noget, men det er jo en .NET/C#-ting !-)
Avatar billede pagh80 Nybegynder
21. oktober 2004 - 10:58 #5
tak for din hjælp indtilvidere. Jeg har dog stadig problemer med at gennemskue hvordan jeg løser det, men det var et skridt på vejen at jeg kan bruge en form til at sende min variabel.

Der er ikke nogle der har et lille eksempel på hvordan man sender og modtager ved brug af forms. Bare et lille eksempel med en knap og textbox på den ene side, og en texbox hvor den modtagede string variabel skal indsættes på den anden side.
Avatar billede roenving Novice
21. oktober 2004 - 15:48 #6
Absolut ukorrekt mark-up, men et eksempel med get-variabel:

Side 1:
<form action='side2.html' method='get' target="_blank">
  <input type="text" name="firma">
  <input type="submit" value="Vis Firma">
</form>

-------------------------------------------------------
side2.html:

<script type="text/javascript">
var q = location.search,getVars = new Array();
if(q){
  q = q.substring(1).split("&")
  for(i=0:q.length>i;i++){
    q[i] = q[i].split("=");
    getVars[q[i][0]] = q[i][1];
  }
}
function getFirma(){
  document.minForm.firma.value = getVars['firma'];
}
window.onload = getFirma;
</script>

<body>
<form name="minForm">
  <input type="text" name="firma">
</form>
</body>
-------------------------------------------------------
Avatar billede pagh80 Nybegynder
22. oktober 2004 - 10:10 #7
tak for kode eksemplet, men for en eller anden grund bliver teksten ikke overført til tekstboxen på næste side.

Her er addressen på siden: http://localhost/popupTest/WebForm2.aspx?firma=Hej
Som det ses overføres 'Hej' fra tekstboxen på den første side.

Side1(WebForm1.aspx):
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="popupTest.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<html>
  <head>
    <title>WebForm1</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name=vs_defaultClientScript content="JavaScript">
    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
  </head>
  <body MS_POSITIONING="GridLayout">
   
  <form action='WebForm2.aspx' method='get' target="_blank">
  <input type="text" name="firma">
  <input type="submit" value="Vis Firma">
</form>
  </body>
</html>

Side2(WebForm2.aspx):
<%@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="popupTest.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<html>
  <head>
  <script language=javascript>
var q = location.search,getVars = new Array();
if(q)
{
  q = q.substring(1).split("&")
  for(i=0:q.length>i;i++)
  {
    q[i] = q[i].split("=");
    getVars[q[i][0]] = q[i][1];
  }
}
function getFirma()
{
  document.minForm.firma.value = getVars['firma'];
}
window.onload = getFirma;
</script>

    <title>WebForm2</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name=vs_defaultClientScript content="JavaScript">
    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
  </head>
  <body MS_POSITIONING="GridLayout">
   
    <form name="minForm">
  <input type="text" name="firma">
</form>   
  </body>
</html>
Avatar billede pagh80 Nybegynder
22. oktober 2004 - 10:58 #8
En lille update. min form tag skal indeholde følgende: runat="server" da dette er en webapplikation skrevet i C#. Det kan get metoden åbenbart ikke finde ud af, så den åbner den nye side med følgende addresse: http://localhost/popupTest/WebForm1.aspx?__VIEWSTATE=dDwtMTI3OTMzNDM4NDs7PgdZJp%2Bb5WPynynkjrfGFOT3icNY&firma=sdfh

Min kode som virker hvis runat=server fjernes på begge sider:

WebForm1.aspx:
<form id="Form1" action="WebForm2.aspx" method=get target="_blank" runat=server>
  <input type="text" name="firma">
  <input type="submit" value="Vis Firma">
</form>

WebForm2.aspx:
<script language="javascript">
var pairs=unescape(location.search.substring(1).split('='));
var pair1 = pairs.split(',firma,');
function getFirma()
{
  document.Form1.ID_t1.value = pair1; //getVars['firma'];
}
window.onload = getFirma;
</script>
...
<form id="Form1" name="minForm">
    <input type="text" name="firma" id="ID_t1" runat=server>
</form>
Avatar billede pagh80 Nybegynder
25. oktober 2004 - 10:24 #9
lukker topic, da jeg har opgivet at løse det på denne måde.
Jeg skriver informationen ned i en tekstfil, som jeg så henter ind igen på den anden side. Ikke specielt smart, men det virker.

tak for hjælpen ellers.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester