Hej!
Jag jobbar i asp.net 2.0 VB och har en Gridview som hämtar uppgifter från en databas och visar. Raderna har olika färg med hjälp av en RowDataBound och det fungerar fint.
Problemet är att jag har en skrivut-knapp och när jag klickar på den försvinner alla färger på raderna och gridden skrivs ut, utan färger.
Är det ngn som har en aning om hur jag ska få med färgerna i utskriften, så vore jag tacksam för ett tips.
På Skrivut-knappen har jag följande script:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
ClientScript.RegisterStartupScript(Me.[GetType](), "print", "window.print();", True)
End Sub
Något som är fel med det kanske?
Hoppas ngn vet ...
Det är nog inte applikationen utan skrivarens drivrutin som bestämmer vad som kommer med eller inte. Brukar väl finnas någon inställning där du kan välja om skrivaren ska ta med bakgrundsfärger eller inte (brukar inte vara standard). Men den inställningen gäller ju i så fall bara lokalt på din dator...
Men jag får för mig att det är onclicken som sabbar färgerna, för direkt när jag klickar på knappen, så försvinner färgen och sedan kommer utskriftsrutan upp.
Sidan laddas ju om vid klicket, så man borde väl kunna skriva ngt kommmando som aktiveras innan utskriftsrutan kommer upp där man lägger tillbaka färgerna igen, men jag får inte till det. Är inte så där jättevan på asp.net.
Att skriva window.print() är samma som att välja print i menyn och som default får du inte med dig bakgrundsfärger när du går via menyn, eller? Det är egentligen javascript, har inget med asp.net att göra mer än att du kan leverera javascriptet via en kontroll förstås.
Istället för bakgrundfärg, lägg en bild bakom och text ovanpå den, kanske går att "lura" den att skriva ut bakgrunden då!
Men om jag väljer print i menyn så får jag väl sidan utskriven precis så som den ser ut med färger om det finns sådana och utan om det inte är några, eller?
Finns det ngt annat och bättre sätt att ge ett skrivut-kommando på, så att det blir riktigt?
De som ska använda systemet vill ha en skrivut-knapp och jag vet faktiskt inte hur man kan göra det på ett bättre sätt.
Har du ngt bättre förslag så tar jag jättegärna emot det ...
<img src="print.gif" alt="Skriv ut" onclick="window.print();" />
nåt sånt, inte 100 på om onclick skall se ut exakt sådär, men det borde gå att goggla fram
Det jag ville komma till var att det är onödigt att skicka en reguest till servern att generera om sidan fast med ett javascript ditsatt i head
om du ser deetta flöde så kanske du inser hur onödigt det är
Server genererar sidan
Klick på knapp -->Server hanterar Eventet "knapp klickad
--> Server genererar OM sidan och skickar tillbaks den till klienten-->
Javascript på klienten skriver ut sidan
jämfört med
Server genererar sidan
Klick på knapp -->
Javascript på klienten skriver ut sidan
<img src="print.gif" alt="Skriv ut" onclick="window.print();" />
nåt sånt, inte 100 på om onclick skall se ut exakt sådär, men det borde gå att goggla fram
Det jag ville komma till var att det är onödigt att skicka en reguest till servern att generera om sidan fast med ett javascript ditsatt i head
om du ser deetta flöde så kanske du inser hur onödigt det är
Server genererar sidan
Klick på knapp -->Server hanterar Eventet "knapp klickad
--> Server genererar OM sidan och skickar tillbaks den till klienten-->
Javascript på klienten skriver ut sidan
jämfört med
Server genererar sidan
Klick på knapp -->
Javascript på klienten skriver ut sidan
I detta fallet ja men om du till exempel ska generera en pdf som skickas browsern för att sedan skrivas ut blir det annorlunda :)
Hej rhdf!
Jag gjorde en bildknapp istället med
<img src="print.gif" alt="Skriv ut" onclick="window.print();" />
och det blev ju naturligtvis mycket bättre. Tack för det tipset. Nu blir det ju inte postback i alla fall och färgerna består även när man klickar på knappen. Färgerna kommer ju inte med på utskriften nu heller, men det funkar inte så med GridView alltså, är det så?
Man kan få med dem om man skapar en pdf istället, har jag uppfattat rätt då?
Jag ser inte varför en tabell som genererat av en gridview skulle skilja sig från en tabell genererats av tex en repeater. Testa att lägga in en statisk tabell och testa, följer inte färgerna med där så är det skrivarinställningar på klienten som bråkar
Genererar du en pdf av utskriften så kommer den ju se ut precis så som du vill att den skall se ut :) MEN det är betydligt bökigare att generera pdf-filer än att bara skriva ut sidan
Men om jag väljer print i menyn så får jag väl sidan utskriven precis så som den ser ut med färger om det finns sådana och utan om det inte är några, eller?
Näe, det är nog det du inte får sirru. :) De flesta vill inte skriva ut bakgrundsfärger utan bara texten när de printar (bläckkonsumtion!!) så därför är alla bakgrundsfärger inte med per default.
Hej igen!
Nu har jag hittat att man kan ställa in om man vill skriva ut bakgrundsfärger och bilder under Internetalternativ precis som du sa först inspiro. Då kan jag ju skriva en notis om det på webbsidan, så får de göra som de vill.
Tack för all hjälp!
140 ms totalt · 3 externa anrop · v20260731065814-full.b746b907