attsifte Δημοσ. 23 Ιουλίου 2007 Δημοσ. 23 Ιουλίου 2007 Δημιουργώ μέσα σε ένα script δυν.πίνακες οι οποίοι αντιστοιχούν σε ημέρες άδειας για χρήστες. Ένας πίνακας π.χ. μπορεί να είναι για 10 χρήστες και να εμφανίζει τις άδειες τους σε ένα έτος, οπότε ο χρήστης έχει μια πλήρη εικόνα για κάθε μέρα. Το αρνητικό είναι οτι πίνακας γίνεται μεγάλος σε πλάτος και ξεπερνά τα όρια της σελίδας με αποτέλεσμα να μην είναι δυνατή η εκτύπωση του με ένα απλό print. Δοκίμασα print >document.write("<input type=button value='Εκτύπωση της σελίδας' onclick='javascript:window.print()'>"); και το αποτέλεσμα είναι να εκτυπώνει μόνο την 1η σελίδα. Και με Save se excel ><input type=button value="Save to xls" onClick="javascript: document.execCommand('SaveAs',0,'tempExcel.xls')"> το αποτέλεσμα είναι να δημιουργεί το xl αρχείο (μήπως και το εκτύπωνα με αυτό τον τρόπο) αλλά το excel δεν αφίνει τον κώδικα και βγάζει ένα σχόλιο κάτω αριστερά "unmanaged document". Kαμιά λύση ή μήπως κάποιον τρόπο ώστε να σπάω τον πίνακα όταν βρίσκω page-limit(και πως το ορίζω αυτο :S) ?
alex2005 Δημοσ. 23 Ιουλίου 2007 Δημοσ. 23 Ιουλίου 2007 Αν ο δυναμικός σου πίνακας "απλωνόταν" κατά ύψος και όχι κατά πλάτος τότε μάλλον δεν θα υπήρχε πρόβλημα.Αν βέβαια αυτή η λύση είναι αποδεκτή στο παράδειγμά σου!Μπορεί να λέω και βλακείες!
attsifte Δημοσ. 24 Ιουλίου 2007 Μέλος Δημοσ. 24 Ιουλίου 2007 Είναι αυτής της μορφής: > 1/1 2/1 ... 1/8 2/8 A 0 1 ... 0 0 C 0 0 ... 0 0 D 1 1 ... 0 0 E 0 0 ... 1 1 G 0 0 ... 0 0 SUM 1 2 ... 1 1 Πάει δλδ πλάγια όσο χρειαστεί για να καλύψει όλες τις μέρες
alex2005 Δημοσ. 24 Ιουλίου 2007 Δημοσ. 24 Ιουλίου 2007 Ναι οκ!Απλά επειδή δεν νομίζω να υπάρχει λύση στο πρόβλημά σου καθώς είναι αδύνατο να εκτυπωθεί σε μία σελίδα κάτι που δεν χωράει,για αυτό σου λέω αν είναι δυνατόν να κάνεις τον πίνακά σου της μορφής: A C D E G SUM 1/1 2/1 .... ... 1/8
Aesmade Δημοσ. 25 Ιουλίου 2007 Δημοσ. 25 Ιουλίου 2007 Υποθέτω πως χρησιμοποιείς <table> για τον πίνακα. Θα μπορούσες με CSS να καθορίσεις το width του κάθε <td> και μετά με javascript να βρεις το width ολόκληρης της οθόνης και να τα διαιρέσεις για να βρεις πόσα <td> "χωράνε" στην οθόνη πριν χρειαστείς καινούριο <tr>.
attsifte Δημοσ. 25 Ιουλίου 2007 Μέλος Δημοσ. 25 Ιουλίου 2007 Υποθέτω πως χρησιμοποιείς <table> για τον πίνακα. Θα μπορούσες με CSS να καθορίσεις το width του κάθε <td> και μετά με javascript να βρεις το width ολόκληρης της οθόνης και να τα διαιρέσεις για να βρεις πόσα <td> "χωράνε" στην οθόνη πριν χρειαστείς καινούριο <tr>. Αυτό με τα CSS δεν το έχω δοκιμάσει και έχω μπερδευετεί λίγο, παίζει κανένα link με κάποιο guide ?
alex2005 Δημοσ. 25 Ιουλίου 2007 Δημοσ. 25 Ιουλίου 2007 Υπάρχει και το attribute του td που είναι : <td width="10"> .Δηλαδή η στήλη σου θα είναι 10pixel. Με javascript μπορείς να κάνεις screen.height και screen.width που παίρνεις το ύψος και το πλάτος της οθόνης του χρήστη,αλλά εγώ δεν πιστεύω πως αυτή είναι η καλύτερη λύση. Βέβαια καλύτερα είναι να πάρεις τις διαστάσεις του εσωτερικού χώρου του browser έτσι: > if(window.innerWidth)width=window.innerWidth; else if (document.documentElement.clientWidth)width=document.documentElement.clientWidth; else width=document.getElementById("document").offsetWidth; Αν δεν ξέρεις από javascript τότε "χτύπα" το στο google....
attsifte Δημοσ. 25 Ιουλίου 2007 Μέλος Δημοσ. 25 Ιουλίου 2007 Thanks, αλλά το πρόβλημα δεν είναι στο μέγεθος της σελίδας αλλά στο μέγεθος του πίνακα και στην εκτύπωση του, το print εκτυπώνει την 1η σελίδα και τις άλλες τις αγνοεί. Ίσως άν είχε παραμέτρους h print, κάτι σαν print(<% ποσοστό εκτύπωσης>) να βόλευε.
alex2005 Δημοσ. 25 Ιουλίου 2007 Δημοσ. 25 Ιουλίου 2007 Κάτσε για να καταλάβουμε δεν εκτυπώνει είπαμε κατά πλάτος την σελίδα και όχι κατά ύψος.Αυτό λέμε και εμείς ακριβώς και σου λέμε έναν τρόπο για να περιορίσεις το πλάτος του πίνακά σου έτσι ώστε να χωράει στην σελίδα και κατ'επέκταση να το εκτυπώνει κιόλας. Πιο συγκεκριμένα λέμε ότι διαβάζοντας το πλάτος της διαθέσιμης σελίδας στον browser μπορείς να ελέγξεις ότι όταν ο πίνακας ξεπεράσει το πλάτος της τότε τα υπόλοιπα περιεχόμενα θα τα πετάξεις σε καινούρια σειρά/πίνακα.Είναι η μόνη λύση που υπάρχει από την στιγμή που θέλεις να κρατήσεις τον πίνακα σου να απλώνεται κατά πλάτος. Δηλαδή διάβασε καλύτερα αυτό που σου λέει ο Aesmade.
attsifte Δημοσ. 25 Ιουλίου 2007 Μέλος Δημοσ. 25 Ιουλίου 2007 Μπερδεύτικα πριν όταν είπες για το screen.width και το συνδίασα με το να αλλάξω το μέγεθος της σελίδας. Anyway, παλέυω με CSS τώρα.
Aesmade Δημοσ. 25 Ιουλίου 2007 Δημοσ. 25 Ιουλίου 2007 Δε χρειάζεται το CSS αν είναι να γράψεις όλα τα <td> με javascript. Έφτιαξα ένα παράδειγμα με HTML και javascript που φτιάχνει ένα πίνακα με 40 <td>, το καθένα με 200 pixel πλάτος και αλλάζει <tr> όταν δεν έχει άλλο χώρο στο browser, δοκίμασέ το για να δεις τι ακριβώς εννοούμε: > <table border="1"> <tr> <script type="text/javascript"> var tdwidth=200; var tdFit=Math.floor(window.innerWidth/tdwidth); for (var i=1;i<=40;i++) { document.write("<td width='"+tdwidth+"'>Stuff</td>"); if (i%tdFit==0) document.write("</tr><tr>"); } </script> </tr> </table>
alex2005 Δημοσ. 25 Ιουλίου 2007 Δημοσ. 25 Ιουλίου 2007 Η λύση του Aesmate είναι αυτή που σου περιγράφαμε με μόνη παρατήρηση ότι το window.innerWidth δεν δουλεύει σε όλους τους browser και έχω την εντύπωση πως δεν δουλεύει και στον IE.Καλύτερα κάνε την διαδικασία που περιέγραψα παραπάνω όσο αναφορά το πλάτος του browser.
alkisg Δημοσ. 25 Ιουλίου 2007 Δημοσ. 25 Ιουλίου 2007 Με CSS μπορείς να βάλεις και κάθετα το κείμενο, δηλαδή σαν να εκτυπωνόταν σε landscape orientation. Φυσικά έτσι δεν θα διαβάζεται στην οθόνη, αλλά μπορείς να το χρησιμοποιείς μόνο στο print css, όχι στο screen css. Έτσι ο πίνακας αν και θα φαίνεται ίδιος (αν στρέψεις το κεφάλι σου 90 μοίρες) δεν θα χρησιμοποιεί περισσότερες στήλες, αλλά περισσότερες γραμμές, οπότε θα τυπώνεται άνετα σε επόμενες Α4.
attsifte Δημοσ. 27 Ιουλίου 2007 Μέλος Δημοσ. 27 Ιουλίου 2007 Thanks για τις απαντήσεις, βρήκα μια λύση και την παλέυω. Αλλά Aesmade ο κώδικας παίζει σε mozilla αλλα όχι σε IE, όπως τόνισε ο alex2005.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.