Avatar billede mr_miyagi Nybegynder
17. maj 2005 - 10:29 Der er 10 kommentarer og
1 løsning

vedr. onload funktion i asp.net

jeg har noget html hvor der bliver kørt en onload funktion i den nederste frame:

<html>
<head>
<title>Preview</title>
<script>
function doPreview() {
  prev.document.write(parent.window.opener.paragraph_edit.ParagraphText.value);
 
}
</script>
</head>
<frameset rows="0,*" frameborder="0" framespacing="0" onload="doPreview()">
  <frame name="control" scrolling="no" noresize src="blank.html">
  <frame name="prev" src="blank.html">
</frameset><noframes></noframes>
</html>

og det skal ændres til en asp.net side hvor man enten kører en slags onload funktion i en asp:label eller i en tabel istedet..

jeg har prøvet det her : men det virker ikke, nu er jeg så heller ikke lige den største haj til kodning :

<%@ Page Language="C#" CodeFile="blank.aspx.cs" Inherits="Default_aspx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <script language="JavaScript">
    function doPreview()
    {
      prev.document.write(parent.window.opener.paragraph_edit.ParagraphText.value);
    }
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:Label OnLoad="doPreview()" runat="server"></asp:Label>
   
    </div>
    </form>
</body>
</html>

håber der er nogle der kan give et svar på hvordan det kan løses, fra eksperterne herinde :)
Avatar billede mr_miyagi Nybegynder
17. maj 2005 - 10:30 #1
så det kan komme til at virke på samme måde som det andet i htmllen
Avatar billede snepnet Nybegynder
18. maj 2005 - 09:44 #2
hej :o)

du kan kalde din doPreview() fra onload på <body>, så du får sådan en her :
<body onload="doPreview();">

mvh
Avatar billede mr_miyagi Nybegynder
19. maj 2005 - 11:30 #3
Hey hey.. hvis jeg tilføjer det til body starter den vel med at skrive det ud i starten gør den ikke, har ikke lige prøvet det...
det er fordi jeg skal have smidt flere <Asp:Labels ind på siden så det kommer til at stå noget i stil med dette :

<form id="form1" runat="server">
    <div>
    <asp:Label runat="server"></asp:Label>

    <asp:Label OnLoad="doPreview()" runat="server"></asp:Label>

    <asp:Label runat="server"></asp:Label>
    </div>


så det kun er den midterste der kører doPreview() funktionen da der skal stå en del HTML Tags i både den øverste og den nederste Label. den skal nemlig først Køre den øverste label og så dernæst label nummer 2 som har doPreview() funktionen. og så tilsidst label nr 3
Avatar billede snepnet Nybegynder
19. maj 2005 - 12:16 #4
hmm... det ser ud til at du fra din preview sætter en værdi på den side der har åbnet vinduet, og som jeg forstår den kode du har skrever, er det kun noget der skal kaldes én gang.

jeg er lidt usikker på hvad det er du synes der skal ske.... onload kan du godt gøre noget ved clientside, men ikke på en enkelt kontrol så vidt jeg ved (du kan gøre det på body, som vist).

OnLoad på en serverkontrol, er et serverside event som du kan håndtere på serveren, men der kan du så ikke kommunikere med andre vinduer.

kan du fortælle hvad det egentlig er der skal ske, og måske også prøve det jeg skrev før... bare så du kan se om det har den rigtige effekt.

mvh
Avatar billede mr_miyagi Nybegynder
19. maj 2005 - 14:33 #5
det doPreview() gør er at hente noget tekst ind fra en tekstbox som ligger på en anden side...
sådan som jeg kan få det til at virke nu er med html frames, som jeg har vist øverst, men problemer er bare at når jeg kører siden er det kun den tekst som jeg har hentet fra tekstboksen som kommer op på siden..

sådan som jeg vil have det til at fungere er at istedet for at læse teksten ind på en blank side, skal den læses ind i <asp:Label nummer 2, label nummer 1 bliver brugt til noget htmlkode..

dvs..
asp:Label 1, udskriver noget html kode
asp:label 2 udskriver den tekst fra den anden side
asp:label 3, udksriver noget html kode..

og der vil jeg så spørge om der ikke findes en simpel måde at eksekvere doPreview() på så teksten bliver skrevet i asp:label nr 2

hvis du forstår hvad jeg mener :)..
Avatar billede mr_miyagi Nybegynder
19. maj 2005 - 14:36 #6
eller med andre ord, så skal den køre doPreview() idet siden kører label nummer 2 på siden
Avatar billede snepnet Nybegynder
19. maj 2005 - 16:23 #7
ahh... nu tror jeg, at jeg er med på hvad der er balladen.
du skal i dit script angive hvor teksten skal ende :

du kan lige få sådan et eksempel her :

<script language="javascript">
function doPreview()
{
  // koden venter lige
}
</script>

og din body
<body onload="doPreview();">

hvis du så har et inputfelt på siden :

<input type="text" id="txtSomeText" value="notset">

og... du kan så sørge for at din preview-ting sætter teksten i det felt :

function doPreview()
{
  document.getElementById('txtText').value = "yuhah";
}

læg mærke til at metoden finder feltet, og sætter en værdi, baseret på feltets angivne id.

brænder tampen nu eller ?

mvh
Avatar billede mr_miyagi Nybegynder
19. maj 2005 - 18:41 #8
jeps det er det faktisk tæt på :), bortset fra at tekstfeltet ligger på en anden side.. den ligger ikke på samme side, det er en del at et størrere system, og det eneste jeg har er den doPreview() funktion, som jeg ved får fat i teksten fra den anden side.. så jeg skal bare have den koblet sammen med label nr 2 så det bliver skrevet ud i den..
men jeg aner ikke rigtig hvordan jeg gør det, da jeg ikke rigig har rodet med javascript før, og om det er muligt  når det er i forbindelse med dotnet..

hvis man nu feks har det sådan her

<html>
<head>
<title>Preview</title>
<script>
function doPreview() {
  prev.document.write(parent.window.opener.paragraph_edit.ParagraphText.value);
 
}
</script>
</head>
<body>
    <asp:Label1 runat=server> : den her label står der et eller andet tilfældigt i

    <ASP:label2 runat=Server> : denne her kalder doPreview() på en eller anden måde
                          så den får teksten ind fra den anden side med teksboksen

    <asp:Label3 runat=server> : den her label står der et eller andet tilfældigt i
</body>
</html>

det er ikke sikkert det behøver at være en Asp:label2 som dopreview skal skrives ud i hvis man kan køre det i en tabel istedet vil det også være fint

    <asp:Label1 runat=server> : den her label står der et eller andet tilfældigt i
<table>
<tr>
    <td>
og så på en elller anden måde kan kalde doPreview() metoden her
</td>
</tr>
</table>
    <asp:Label3 runat=server> : den her label står der et eller andet tilfældigt i

det kan være det bare er en simpel kommando man kan bruge til at kalde doPreview metoden med. så det bliver skrevet ud i den midterste label
:)
Avatar billede snepnet Nybegynder
19. maj 2005 - 18:51 #9
// første spørgsmål :

function doPreview()
{
  document.getElementById('txtText').value = "yuhah";
}

sætter bare teksten til yuhah, så det skifter du bare ud med det du havde fra før :
parent.window.opener.paragraph_edit.ParagraphText.value

altså :
function doPreview()
{
  document.getElementById('txtText').value = parent.window.opener.paragraph_edit.ParagraphText.value;
}

// andet spørgsmål
bare skift din <ASP:label2 runat=Server> ud med en :
<div id="txtText"></div>

og så tilpas doPreview til :
function doPreview()
{
  document.getElementById('txtText').innerText= parent.window.opener.paragraph_edit.ParagraphText.value;
}

mvh
Avatar billede mr_miyagi Nybegynder
20. maj 2005 - 08:08 #10
ahhhh oki. cool på den måde.
det var det hele takker for hjælpen snepnet.

hvis du lige vil lægge svar smider jeg lige nogle point til dig. :)
Avatar billede snepnet Nybegynder
20. maj 2005 - 09:55 #11
det får du her :o)
mvh
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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