Avatar billede cypherdenmark Nybegynder
04. februar 2003 - 12:29 Der er 30 kommentarer og
1 løsning

print af side i nyt vindue

Hej alle

Jeg har en ASP siden som trækker noget data ud fra databasen. Jeg kunne godt tænkte mig at den skulle udskrive en bestem artikel ud fra id nummeret.

Det der skal foregå er når man klikker på udkriv artikel, så popper der et nyt vindue op (med printer dialog) så den bliver printer venlig. Altså en ren siden med artiklen.

Kan dette lade sig gøre og skal man egentligt bruge javascript til dette formål
Avatar billede jensendk Nybegynder
04. februar 2003 - 12:34 #1
Selve formatteringen af teksten på printsiden laver du jo selv,  går ud fra du kan din asp

En Javapopop kan snildt åbne en ny side..

<a href="#" onClick="window.open('printside.asp?print=sidenummridatabase', 'newwindow')" >Print denne side ud</A>

Der er ikke linieskift mellem ? og print=
Avatar billede moefelt Nybegynder
04. februar 2003 - 12:36 #2
yeps det kan du sagtens. Den her kan du sætte nederst på siden - så promptes der automatisk til printer dialog

<script>
window.print();
</script>
Avatar billede nikolajdu Nybegynder
04. februar 2003 - 12:37 #3
Hvis du på hovedsiden udskriver dine data alá :

<script>
tilPrinter = "HER ER DIT DATABASEUDTRÆK";
<script>

Så kan du åbne et nyt vindue med :

<a href="java script:void(0)" onclick="window.open('printSide.html','print','height=300,width=300');">Åbn og print</a>

Og så have følgende på din printside :

<html>
<head>
    <title>::: Print :::</title>

    <script>
   
    ns4 = (document.layers)? true:false
    ie4 = (document.all)? true:false
       
    function printMe(){
   
    if(!ns4){
   
var hertil = (ie4)? document.all['indHer'] : document.getElementById('indHer');
 
hertil.innerHTML = window.opener.document.tilPrinter;

window.print()
setTimeout('self.close',1000)

}else{
alert('Adrv du bruger Ns 4 eller ældre. Fyføj!!')
    }
}
   
    </script>
</head>

<body onload="printMe()">
<div id="indHer">asda</div>

</body>

/Nikolaj
Avatar billede nikolajdu Nybegynder
04. februar 2003 - 12:52 #4
window.opener.tilPrinter
Avatar billede cypherdenmark Nybegynder
04. februar 2003 - 13:05 #5
>>jensendk

Skal man så lave en side kaldet printside.asp som så indeholder selve select sætningen. Som så får artiklens ID altså ud fra printside.asp?print=34.

Er dette korretkt forstået??

Men hvis dette er tilfældet er det jo ikke særlig smart hvis man har mange artikler fra forskellige tubler i databasen, så skal man lave en print siden for hver tubel i db (forskellige select sætninger). Kan man ikke omgå dette problem.
Avatar billede nikolajdu Nybegynder
04. februar 2003 - 13:20 #6
Hvis det er et bestemt indhold på den første side du vil printe, så kan du med fordel trække det ud med javascript. Der er absolut ingen grund til at trække fra databasen for oplysninger du allerede har hentet....
Avatar billede moefelt Nybegynder
04. februar 2003 - 13:25 #7
du kan jo bare smide tabellens navn med i url'en ligesom id
Avatar billede cypherdenmark Nybegynder
04. februar 2003 - 13:27 #8
moefelt>> Nåååå okay.....smart......

Kunne du evt lave et eksempel med print side og hvordan link skal se ud. Jeg er ikke lige den skarpeste til ASP :-)

På forhånd tak
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 10:19 #9
Var der nogle der havde et bud på hvordan det kunne løses....  :-)
Avatar billede nikolajdu Nybegynder
05. februar 2003 - 10:21 #10
Jeg har vel givet dig et bud....

Jeg mangler lidt oplysninger om hvor det du vi printe står for at kunne uddybe det...
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 10:32 #11
OK....det lyder da godt....  TAK.... :-)

Alle mine tekster ligge i db med forskellige tuble navne (nyheder,produkter,kunder osv....)

F.eks. på min side nyheder.asp bliver alle mine nyheder der ligger i db vist. Så ved hver nyhed skal der være en print knap, som printer den enkelt nyhed ud. Dvs at den skal være printer venlig.

Men da jeg har mange tubler i db kunne jeg godt tænke mig at have EN print funktion som på en eller anden måde tog den valgte artikel og printede den ud i en printer venlig udgave.

Håber den gave lidt mening. Jeg syntes det er lidt svær at forklare....
Avatar billede nikolajdu Nybegynder
05. februar 2003 - 11:51 #12
Har lavet lidt om på det hele så nu ser det sådan her ud :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>

<script>

function printDu(hvad){
printId = hvad;
window.open('printSide.html','print','height=300,width=300');
}
</script>

<body>
<div id="nyhed1">
her er nyhed 1
</div>
<a href="#" onclick="printDu('nyhed1');return false">print nyhed 1</a>
<div id="nyhed2">
her er nyhed 2
</div>
<a href="#" onclick="printDu('nyhed2');return false">print nyhed 2</a>
<br>
<div id="nyhed3">
her er nyhed 3
</div>
<a href="#" onclick="printDu('nyhed3');return false">print nyhed 3</a>
<br>
</body>
</html>

Og printSide.html :

<html>
<head>
    <title>::: Print :::</title>

    <script>
   
    ns4 = (document.layers)? true:false
    ie4 = (document.all)? true:false
       
    function printMe(){
   
    if(!ns4){
   
var hertil = (ie4)? document.all['indHer'] : document.getElementById('indHer');
 
hertil.innerHTML = window.opener.document.getElementById(window.opener.printId).innerHTML;

window.print()
setTimeout('self.close',1000)

}else{
alert('Adrv du bruger Ns 4 eller ældre. Fyføj!!')
    }
}
   
    </script>

</head>
<body onload="printMe()">
<div id="indHer"></div>

</body>
</html>


/Nikolaj
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 12:12 #13
Ok har lige prøvet at sætte den ind nu. Og Ikke noget med div.....Kun nedestående og selvfølgelig script i toppen af dokumentet. Burde det ikke være nok??

<a href="#" onclick="printDu('ID');return false">Print Nyhed</a>

Hvor id så er ID nummeret på nyheden.

Men når jeg klikker på linket så åbner den et nyt vindue og siger UNDIFINED

Hvorfor det....
Avatar billede nikolajdu Nybegynder
05. februar 2003 - 12:18 #14
Det er jo klart. Hvis du vil printe et afgrænset område, så må du jo starte med at afgrænse dem. Det er det jeg har gjort ved at lave <div id="nyhed1"> alternativt kan du bruge <span id="nyhed1"> eller <table id="nyhed1">, men du er nødt til at have dem med.

Du skal desuden så også have forskellige id´er - nyhed1, nyhed2 osv. Ellers vil man jo printe alt på én gang....

/Nikolaj
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 12:19 #15
Nåå ja selvfølgelig....Det prøver jeg lige.......
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 12:28 #16
Den siger stadivæk UNDIFINED. Se lige på code

<tr>
<div id="<%=ID%>">
<td><%=nyhed%></td>
</div>
</tr>
<tr>
<td><a href="#" onclick="printDu('ID');return false">Print</a>
</td>
</tr>

Ovenståen er i en loop så den henter alle nyheder fra databasen. Alle DIV ID får et nummer men er det så ikke link der er noget galt med...
Avatar billede nikolajdu Nybegynder
05. februar 2003 - 12:31 #17
Jeg er ikke glad for at id udelukkende består af et tal. Sæt et bogstav foran og så skal ID i din <a> jo være tilsvarende.

<tr>
<div id="nyhed<%=ID%>">
<td><%=nyhed%></td>
</div>
</tr>
<tr>
<td><a href="#" onclick="printDu('nyhed<%=ID%>');return false">Print</a>
</td>
</tr>
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 12:37 #18
hmmmm mærkeligt den siger stadigvæk UNDEFINED.....
Avatar billede nikolajdu Nybegynder
05. februar 2003 - 12:53 #19
Så må du vise lidt af din kode når du har parset din ASP.

Hvordan ser dine id="bla ud" og dit kald

/Nikolaj
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 13:06 #20
<tr>
<div id="nyhed41">
<td>Her en en ny nyhed............Testen........</td>
</div>
</tr>
<tr>
<td><a href="#" onclick="printDu('nyhed41');return false">Print</a></td>
</tr>

<tr>
<div id="nyhed40">
<td>Her en en ny nyhed............Mere TEST........</td>
</div>
</tr>
<tr>
<td><a href="#" onclick="printDu('nyhed40');return false">Print</a></td>
</tr>
Avatar billede nikolajdu Nybegynder
05. februar 2003 - 13:19 #21
Hvor siger den undefined? Kan du evt smide et link - Det vil gøre det noget nemmere :))
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 13:23 #22
har desværre ikke nogen adresse da jeg tester det her hos mig. Men den siger UNDEFINED i det vindue der popper op.....

Håber det kan bruges...  :-)
Avatar billede nikolajdu Nybegynder
05. februar 2003 - 13:43 #23
http://www.reflectoria.dk/e/printNyhed.html

Virker fint hos mig....

kilden her :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>

<script>

var printId;

function printDu(hvad){
printId = hvad;
window.open('printSide.html','print','height=300,width=300');
}
</script>

<body>
<table>
<tr>
<td id="nyhed41">Her en en ny nyhed............Testen........</td>
</tr>
<tr>
<td><a href="#" onclick="printDu('nyhed41');return false">Print</a></td>
</tr>

<tr>
<td id="nyhed40">Her en en ny nyhed............Mere TEST........</td>
</tr>
<tr>
<td><a href="#" onclick="printDu('nyhed40');return false">Print</a></td>
</tr>
 



</table>
</body>
</html>

og

<html>
<head>
    <title>::: Print :::</title>

    <script>
   
    ns4 = (document.layers)? true:false
    ie4 = (document.all)? true:false
       
    function printMe(){
   
    if(!ns4){
   
var hertil = (ie4)? document.all['indHer'] : document.getElementById('indHer');

hertil.innerHTML = window.opener.document.getElementById(window.opener.printId).innerHTML;

window.print()
setTimeout('self.close',1000)

}else{
alert('Adrv du bruger Ns 4 eller ældre. Fyføj!!')
    }
}
   
    </script>

</head>
<body onload="printMe()">
<div id="indHer"></div>

</body>
</html>


/Nikolaj
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 14:46 #24
Hey Nikolaj....

Det prøver jeg lige.......
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 14:59 #25
Ok fandt en lille fejl:

Filnavnet:
Istedet for printSide.html havde jeg istedet lavet printSide.htm

Derfor UNDEFINED....

Efter at have omdøbet filen til den rigtige filnavn siger den ikke undefined mere. Men istedet et tomt vindue. Kan det have noget at gøre med at min side er i frames....???
Avatar billede nikolajdu Nybegynder
05. februar 2003 - 15:22 #26
Det burde det nu ikke gøre, da "opener" altid er den frame du åbnede fra. Anyway så prøv lige at indsætte ramme navnet også.

window.opener.parent.RAMME_NAVN.document.getElementById(window.opener.parent.RAMME_NAVN.printId).innerHTML;
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 15:44 #27
Nå men det virkede ikke, men jeg har anden div i mit dokument. Hvis jeg prøver at udskrive hele denne div så virker det. Med det reslultere i at f.eks alle nyheder bliver skrevet ud.

<div style="height:100; overflow-x:hidden; overflow-y:scroll;" class="Txt" id="nyheder">
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 15:45 #28
Kan denne div resultere i at man ikke kan udskrive den anden div vi lavede........
Avatar billede nikolajdu Nybegynder
05. februar 2003 - 15:48 #29
Den skulle meget gern KUN tage indholdet af <div> der har rigtige ID.
Avatar billede cypherdenmark Nybegynder
05. februar 2003 - 16:00 #30
nååå ok......jeg tror lige jeg dropper dette spg indtil videre.

Dine eksempler virker helt klart det har jeg prøvet. Men når jeg sammenkører den sammen med mine så sker der et eller andet mærkeligt som jeg ikke kan helt kan forstå. Især dette med ID nummeret.

Tak for din hjælp så langt.....YOU GET THE POINT......
Avatar billede nikolajdu Nybegynder
06. februar 2003 - 08:57 #31
Jeg er ked af at du ikke kan få det til at dutte, men det kræver noget mere kode. Specielt kompileret kode da jeg ikke fatter meget ASP :((
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
Kurser inden for grundlæggende programmering

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