Λύση χωρίς κώδικα: εμφάνιση των ημερών από την τελευταία αλλαγή ενός στοιχείου λίστας
Applies To
SharePoint στο Microsoft 365 Το SharePoint στο Microsoft 365 για μικρές επιχειρήσειςαπό Justin Joyce, LANtek
Σημείωση: Αυτό το άρθρο αποτελεί μέρος μιας συλλογής δημοσιεύσεων από τέσσερα έτη από το ιστολόγιο Get The Point για τους τελικούς χρήστες του SharePoint.
Επισκόπηση: προσαρμοσμένες αναφορές ενηλικίωσης χωρίς κωδικό
Ένα από τα λειτουργικά τμήματα μιας τοποθεσίας του SharePoint που ζητούνται συχνά είναι μια αναφορά ενηλικίωσης για εργασίες ή στοιχεία λίστας. Με άλλα λόγια, πόσες ημέρες/μήνες έχει περάσει από την τελευταία τροποποίηση αυτού του στοιχείου λίστας;
Στην επιφάνεια αυτό φαίνεται να είναι ένα πολύ απλό αίτημα. Μετά από όλα, έχουμε ημερομηνίες για τη δημιουργία και την τροποποίηση στοιχείων, έχουμε τη δυνατότητα αποθήκευσης προσαρμοσμένων ημερομηνιών όταν ορισμένες αλλαγές στα στοιχεία πραγματοποιούνται μέσω δεκτών συμβάντων. Έχουμε υπολογισμένες στήλες όπου μπορούμε να συμπεριλάβουμε τύπους που μοιάζουν με το Excel για να λειτουργήσουμε με τις πληροφορίες μας. Αυτό φαίνεται σαν μια πολύ απλή πρόταση. Διαλέγουμε ένα πεδίο ημερομηνίας, δημιουργούμε μια υπολογιζόμενη στήλη και, στη συνέχεια, κάνουμε έναν τύπο κάτι σύμφωνα με τις γραμμές του [DateField] – [σήμερα]. Αχ, όχι τόσο γρήγορα όμως! Καθώς όλοι όσοι έχουν επιχειρήσει αυτή την "απλή" εργασία γνωρίζουν, η προσπάθεια να χρησιμοποιήσετε κάτι όπως [σήμερα] σε μια υπολογιζόμενη στήλη προκαλεί προβλήματα. Δοκιμάστε να εισαγάγετε [σήμερα] στο πλαίσιο τύπου της στήλης υπολογισμού θα σας δοθεί ένα μήνυμα σφάλματος ως εξής:
Γιατί είναι αυτό; Λοιπόν, έχει να κάνει με τον τρόπο υπολογισμού των υπολογιζόμενων στηλών.
Ας πάρουμε έναν απλό τύπο ως παράδειγμα:
= IF ( [στήλη1] <= [στήλη2]; "OK"; "Not OK")
Όλα αυτά τα παραπάνω λένε είναι ότι εάν το στήλη1 είναι μικρότερο ή ίσο με το στήλη2, τότε εμφανίζεται το κουμπί OK, διαφορετικά δεν εμφανίζεται το κουμπί OK. Αυτός είναι ένας αρκετά τυπικός βασικός τύπος για μια υπολογιζόμενη στήλη και κάνει μια βασική υπόθεση σχετικά με το στοιχείο λίστας που περιέχει αυτές τις στήλες: οι τιμές για το στήλη1 και το στήλη2 δεν θα μπορούν ποτέ να αλλάξουν χωρίς ένα συμβάν ενημέρωσης στο στοιχείο λίστας.
Αυτό είναι σωστό, οι υπολογιζόμενες στήλες θα υπολογίζονται εκ νέου μόνο όταν η λίστα ενημερώνεται (ή δημιουργείται), καθώς υποθέτει ότι οι πληροφορίες που υπολογίζετε περιέχονται στο ίδιο το στοιχείο. Αυτό δημιουργεί ένα πρόβλημα όταν προσπαθείτε να χρησιμοποιήσετε κάτι που αλλάζει ανεξάρτητα από τα πεδία του στοιχείου, όπως η σημερινή ημερομηνία.
Τώρα δεν ήμουν στη σύσκεψη όπου αποφάσισαν ότι αυτός είναι ο τρόπος με τον οποίο οι υπολογισμένες στήλες θα λειτουργούσαν, ωστόσο, εάν έπρεπε να κάνω μια εκπαιδευμένη εικασία, θα υπέθετα ότι λειτουργούν με αυτόν τον τρόπο για την απόδοση. Φανταστείτε εάν είχατε μια λίστα αρκετών χιλιάδων στοιχείων, καθένα από τα οποία περιείχε μια υπολογιζόμενη στήλη που χρειάζονταν μια "ζωντανή" ενημέρωση. Αυτό θα σήμαινε ότι κάποιος μηχανισμός, ίσως μια εργασία χρονομέτρησης, θα έπρεπε να επαναλαμβάνει κάθε στοιχείο που περιείχε αυτή την υπολογιζόμενη στήλη κάθε τόσο και να ενημερώνει την τιμή του. Αυτό μπορεί να είναι εξαιρετικά φορολογικό όσον αφορά τις επιδόσεις, επειδή με μεγαλύτερες αναπτύξεις αυτή η εργασία μπορεί να εκτελείται συνεχώς και να αλλάζει τα πράγματα. Αυτό είναι ακριβώς εικασία μου, αλλά κάνει αρκετά αίσθηση, αν το σκεφτείς.
Υπάρχουν ορισμένες προτάσεις για παρόμοιες λύσεις που κυκλοφορούν εκεί έξω, οι οποίες περιλαμβάνουν την εξαπάτηση του SharePoint για την αποδοχή μιας τιμής σήμερα, δημιουργώντας πρώτα μια στήλη με το όνομα σήμερα και, στη συνέχεια, προσθέτοντας την στον τύπο σας και, στη συνέχεια, διαγράφοντας την. Αυτά είναι όλα καλά και καλά, αλλά να θυμάστε τι είπα για το πότε ενημερώνονται οι υπολογισμένες στήλες. Αυτή η τιμή θα αλλάξει μόνο όταν ενημερωθεί το στοιχείο, γεγονός που σημαίνει ότι οι τιμές σας σύντομα θα είναι λανθασμένες, ειδικά στην περίπτωση ενός υπολογισμού ημέρας.
Έχω δει άλλους να χρησιμοποιούν έξυπνα JavaScript για να γράψουν τις τιμές στη σελίδα. Αυτό θα μπορούσε να λειτουργήσει επίσης, αλλά είμαι λίγο πολύ κατηγορηματικά ενάντια στη δέσμη ενεργειών του προγράμματος-πελάτη όταν μπορεί να αποφευχθεί.
Υλοποίηση
Τι πρέπει να κάνω; Οι υπολογισμένες στήλες είναι εκτός της ερώτησης για τις λεγόμενες "πτητικές" συναρτήσεις όπως η σημερινή. Είναι πιθανό ότι θα μπορούσαμε να αναπτύξουμε κάποιο προσαρμοσμένο κώδικα για να το τακτοποιήσουμε αυτό για εμάς, όπως μια υπολογιζόμενη στήλη, μια εργασία χρονομέτρησης ή μια προγραμματισμένη διαδικασία, για να έρθουμε και να ενημερώσουμε κάθε στοιχείο που χρειάζεται αυτόν τον υπολογισμό. Αυτό μας φέρνει πίσω στο πρόβλημα των επιδόσεων που ανέφερα στην τελευταία παράγραφο, ωστόσο, και επιπλέον είναι μια εύθραυστη λύση που θα ήταν ιδιαίτερα συγκεκριμένη για την τοποθεσία/λίστα/στήλη στην ερώτηση. Εκτός από αυτές τις δύο ανησυχίες, θα πρέπει επίσης να πάτε να εντοπίσετε έναν σπασίκλα, όπως εγώ, που ξέρει πώς να κωδικοποιεί και να τον πείθει να αναπτύξει αυτή τη λύση για εσάς. Αλλά υπάρχει ένας ευκολότερος τρόπος!
Εάν έχετε δικαιώματα για να δημιουργήσετε πεδία και να επεξεργαστείτε σελίδες στην τοποθεσία σας και να έχετε κάποιες γνώσεις σχετικά με το XSLT και να δημιουργήσετε προβολές, μπορείτε να συνδυάσετε ένα πρότυπο XSL που μπορεί να συμπεριληφθεί σε μια προβολή λίστας και θα υπολογίζει πιστά την αξία σας κάθε φορά που ζητείται η σελίδα. Αυτό το σενάριο καταργεί την ανησυχία μας για τις επιδόσεις και δεν απαιτεί την ανάπτυξη και την ανάπτυξη προσαρμοσμένου κώδικα μέσω μιας λύσης.
Τέλεια. Πώς θα το κάνουμε λοιπόν;
-
Δημιουργήστε ή επιλέξτε το πεδίο που θα λειτουργεί ως πηγή μας. Πρέπει να είναι τύπος ημερομηνίας.
-
Δημιουργήστε το πεδίο που θα λειτουργεί ως σύμβολο κράτησης θέσης για την υπολογισμένη τιμή.
-
Προσθέστε και τα δύο αυτά πεδία σε έναν τύπο περιεχομένου και προσθέστε αυτόν τον τύπο περιεχομένου σε μια λίστα.
-
Δημιουργήστε μια προβολή της λίστας που περιέχει τις στήλες προέλευση και σύμβολο κράτησης θέσης.
-
Αποστολή του προτύπου XSL στη βιβλιοθήκη στυλ.
-
Ορίστε την ιδιότητα "σύνδεση XSL" για το τμήμα Web προβολής λίστας μέσω του περιβάλλοντος εργασίας χρήστη.
-
Επιτυχία!
Ας εξερευνήσουμε ένα παράδειγμα χρήσης πεζών-κεφαλαίων και να περπατήσουμε στην υλοποίηση. Ο πελάτης μας ήθελε μια προβολή της κύριας λίστας που θα τους έλεγε για πόσο χρονικό διάστημα βρισκόταν ένα συγκεκριμένο στοιχείο λίστας στην κατάστασή του. Αυτή η λίστα περιείχε έναν προσαρμοσμένο τύπο περιεχομένου τοποθεσίας που προέρχεται από τον τύπο στοιχείου και έχει προστεθεί στη λίστα. Υπήρχε ήδη ένας δέκτης συμβάντων στη θέση του που καταγράφει κάθε φορά που το πεδίο κατάστασης στο στοιχείο λίστας έχει αλλάξει και αποθηκεύσει αυτή την ημερομηνία σε μια στήλη που ονομάζεται "ημερομηνία κατάστασης άλλαξε". Δεν απαιτείται όλη αυτή η καλωδίωση και μπορεί να γίνει με οποιοδήποτε πεδίο ημερομηνιών (τυχαίνει απλώς να είναι η εφαρμογή μας, αλλά μπορείτε να πειραματιστείτε ελεύθερα). Το ελάχιστο που θα χρειαστείτε είναι το πεδίο "ημερομηνία προέλευσης" και το πεδίο κράτησης θέσης για να κρατήσετε τον υπολογισμό σας (περισσότερα για αυτό στην επόμενη παράγραφο) που έχουν προστεθεί στη λίστα σας, παρόλο που προτείνω να χρησιμοποιήσετε στήλες τοποθεσίας και τύπους περιεχομένου τοποθεσίας σε περίπτωση που θέλετε να χρησιμοποιήσετε ξανά αυτήν τη λύση σε άλλα σημεία της τοποθεσίας σας.
Έτσι, έχουμε την ημερομηνία προέλευσης που μπορούμε να χρησιμοποιήσουμε στον υπολογισμό μας έναντι της σημερινής ημερομηνίας. Τώρα μπορούμε να δημιουργήσουμε μια προσαρμοσμένη στήλη τοποθεσίας που θα χρησιμοποιηθεί ως κοντέινερ για την υπολογισμένη τιμή μας. Σε αυτή την περίπτωση, επέλεξα να χρησιμοποιήσω μια υπολογιζόμενη στήλη, επειδή δεν θα μπορεί να αλλάξει στις φόρμες "νέα" ή "Επεξεργασία στοιχείου", αλλά μπορεί να επιλεγεί για εμφάνιση στις προβολές, καθώς δεν θέλουμε οι χρήστες να εισάγουν αυθαίρετες τιμές σε αυτήν τη στήλη. Θα μπορούσε να προκαλέσει σύγχυση ως προς το γιατί δεν εμφανίζεται στις προβολές, κ. λπ.
Τώρα που έχουμε τη στήλη της τοποθεσίας μας, μπορούμε να την προσθέσουμε στους τύπους περιεχομένου που θα χρησιμοποιηθούν στη λίστα μας. Στη συνέχεια, πρέπει να δημιουργήσουμε την προβολή μας που αργότερα θα προσαρμοστεί με το XSLT. Βεβαιωθείτε ότι δημιουργείτε μια τυπική προβολή που περιέχει τη στήλη "ημερομηνία προέλευσης" και τη νέα υπολογιζόμενη στήλη που θα λειτουργεί ως σύμβολο κράτησης θέσης για την υπολογισμένη τιμή.
Τώρα έχουμε τα πάντα στη θέση τους που θα απαιτήσουμε να υποστηρίξουμε την προσαρμοσμένη αναφορά γήρανσης. Το μόνο που απομένει είναι να δημιουργήσετε το πρότυπο XSL, να το ανεβάσετε στη βιβλιοθήκη στυλ της τοποθεσίας και να το συνδέσετε με την προβολή λίστας. Το πρότυπο XSL που θα χρησιμοποιήσουμε θα περιέχει ορισμένες κανονικές σημάνσεις που δημιουργούνται από το SharePoint για τη δημιουργία της προβολής, καθώς και τη δική μας προσαρμοσμένη σήμανση που χρησιμοποιείται για την παράκαμψη ορισμένων τμημάτων αυτού και τον υπολογισμό της επιθυμητής τιμής για εμάς.
Παροχή πίστωσης όπου οφείλεται η πίστωση, τα πρότυπα XSL για την εκτέλεση των πραγματικών υπολογισμών που χρησιμοποιώ για αυτήν τη λύση παρέχονται ευγενικά από το "swirch" στα φόρουμ του MSDN: http://Social.MSDN.Microsoft.com/Forums/EN-US/sharepointcustomization/Thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/
Κάντε λήψη του φύλλου στυλ XSL (aging.zip) που έχω συγκεντρώσει εδώ: https://OneDrive.Live.com/?CID=c262e8e2d59a86d9&permissionsChanged = 1&ID = c262e8e2d59a86d9! 104
Ανοίγοντας αυτό επάνω στο αγαπημένο πρόγραμμα επεξεργασίας κειμένου θα δείτε την αφθονία των κανονικών σημάνσεων XSL του SharePoint για την απόδοση των προβολών, εάν συνεχίσετε να κάνετε κύλιση προς τα κάτω στη γραμμή 357, θα δείτε την έναρξη των προσαρμοσμένων προτύπων που πρόσθεσα στη σήμανση, το πρώτο από τα οποία είναι το πρότυπο "DateDiff" ακολουθούμενο από το πρότυπο "Υπολογισμός-Ιουλιανός-Day" και "FieldRef_printTableCell_EcbAllowed. Days_x0020_At_x0020_Status" Αυτά είναι τα τρία πρότυπά μας που θα κάνουν και θα εμφανίζουν τους υπολογισμούς μας στις απόψεις μας. Εάν πρόκειται να χρησιμοποιήσετε διαφορετικά ονόματα πεδίων από αυτά που καθορίστηκαν παραπάνω σε αυτό το άρθρο, θα πρέπει να χρησιμοποιήσετε αυτά τα πρότυπα και να αντικαταστήσετε τυχόν αναφορές στα άλλα ονόματα. Να θυμάστε, για αυτό θα θέλετε να χρησιμοποιήσετε το εσωτερικό όνομα του πεδίου όχι το εμφανιζόμενο όνομα.
Αφού βεβαιωθείτε ότι το πρότυπο είναι έτοιμο για μετάβαση, μεταβείτε στη βιβλιοθήκη στυλ και στείλτε το στο φάκελο "φύλλα στυλ XSL" και, στη συνέχεια, αντιγράψτε τη σύνδεση προς το αρχείο. Αυτό θα μας επιτρέψει να κάνουμε εύκολα αλλαγές σε αυτό αργότερα ή να το προσθέσουμε σε διαφορετικά τμήματα της τοποθεσίας, όπως μας ευχαριστεί.
Στη συνέχεια, μεταβείτε στη λίστα και επιλέξτε την προβολή που δημιουργήσατε προηγουμένως σε αυτό το άρθρο. Από το μενού "Ενέργειες τοποθεσίας", κάντε κλικ στην επιλογή "Επεξεργασία σελίδας".
Εντοπίστε το τμήμα Web προβολής λίστας στη σελίδα και ανοίξτε το μενού Τμήματος Web κάνοντας κλικ στο μικρό βέλος προς τα κάτω στην επάνω δεξιά γωνία. Από αυτό το μενού, επιλέξτε "Επεξεργασία τμήματος Web".
Με αυτόν τον τρόπο, θα ανοίξει το μενού του Τμήματος Web στη δεξιά πλευρά του παραθύρου του προγράμματος περιήγησής σας.
Κάντε κλικ στο + για την ενότητα "διάφορα" και εντοπίστε την ιδιότητα "σύνδεση XSL".
Επικολλήστε τη σύνδεση προς το αρχείο XSL στη βιβλιοθήκη στυλ που αντιγράψατε νωρίτερα (αυτή μπορεί να είναι μια σχετική ή απόλυτη σύνδεση).
Κάντε κλικ στο κουμπί "OK" για να αποθηκεύσετε τις αλλαγές σας και, στη συνέχεια, κάντε κλικ στο κουμπί "διακοπή επεξεργασίας" στην κορδέλα "σελίδα" στο επάνω μέρος της σελίδας.
Εάν όλα έχουν ρυθμιστεί σωστά, θα πρέπει τώρα να βλέπετε αριθμούς στη στήλη "ημέρες στη θέση".
Και τέλος, εδώ θα μοιάζει με κάποια στοιχεία δοκιμής των διαφόρων ημερομηνιών:
Σύνοψη:
Εκεί είναι: ένας όμορφα διαμορφωμένος, ισχυρός και καλύτερος τρόπος για να δημιουργήσετε μια αναφορά ενηλικίωσης στο SharePoint., πλήρης, με μια απλή εφαρμογή χωρίς κώδικα. Αυτό έχει αρκετές πιθανές εφαρμογές εκτός από τη μοναδική περίπτωση χρήσης που έχουμε διερευνήσει εδώ. Ένα άλλο συνηθισμένο σενάριο για αυτόν τον τύπο αναφοράς είναι να το επισυνάψετε σε μια λίστα εργασιών, ώστε να μπορείτε να δείτε πόσος χρόνος έχει περάσει από τη στιγμή που δημιουργήθηκε μια εργασία με μια ματιά.
Απολαύστε το!
--Justin
Justin Joyce, LANtek
Σχόλια
Λείπουν
βήματα 10/8/2012 3:51 AM Εντάξει, ακολούθησα τα βήματα, αλλά πρέπει να υπάρχει κάτι που λείπει-πώς θα γνωρίζει το XSL ποια ημερομηνία να χρησιμοποιήσει ή σε ποιο πεδίο για να προσθέσετε τις ημέρες από την ίδια στιγμή; Μην το μισείτε όταν λείπουν βήματα.Δεν υπάρχει κωδικός, σύμφωνοι!
8/30/2012 12:12 PM Συμφωνώ-δεν νομίζω ότι αυτό μετράει πραγματικά ως "δεν υπάρχει κωδικός". Είναι ενδιαφέρον ότι, μέσα από κάποια αποτυχημένη του SharePoint, έχω μια υπολογιζόμενη στήλη εργασίας χρησιμοποιώντας σήμερα... Δεν είστε βέβαιοι για το πώς ή γιατί δεν μπορώ να το κάνω να το κάνει ξανά, αλλά το ένα είναι ακόμα εκεί και λειτουργεί.Τύπος για την υπολογισμένη στήλη "ημέρες στην κατάσταση";
5/2/2012 7:39 AM Justin-ποιος είναι ο τύπος που χρησιμοποιήσατε για την υπολογιζόμενη στήλη τοποθεσίας "ημέρες στην κατάσταση" (στήλη κράτησης θέσης); Ήταν "= σήμερα";SharePoint 2007
12/2/2011 11:29 AM Προς το παρόν δεν έχω επιχειρήσει να εφαρμόσω αυτήν τη λύση στο SharePoint 2007, ωστόσο αναμένω σε αυτήν. Δυστυχώς, δεν υπάρχει καμία ιδιότητα XslLink στην επιφάνεια του Τμήματος Web μέσω του περιβάλλοντος εργασίας χρήστη.Μεγάλη δημοσίευση
11/30/2011 9:53 AM Γεια σας, Μεγάλη θέση. Χρησιμοποιώ το SharePoint 2007. Δεν έχω μια ενότητα misc όπως αναφέρεται παραπάνω. Έχετε βήματα για μια ρύθμιση παραμέτρων του SP2007; Ευχαριστούμε.Re: λύση χωρίς κώδικα: εμφάνιση των ημερών από την τελευταία αλλαγή
ενός στοιχείου λίστας του SharePoint 10/11/2011 8:24 AM Γεια σου, Κρις. Μεγάλη εύρεση! Πάω να ρίξουμε μια ματιά σε αυτό που δημοσιεύτηκε ελπίζουμε αργότερα σήμερα και να δούμε αν μπορώ να κάνω αυτή τη λύση λίγο πιο ισχυρή. Χαίρομαι που σας άρεσε η δημοσίευση και είμαι πολύ ευτυχής που μπορέσατε να εντοπίσετε μια λύση για την Ευρωπαϊκή μορφή ημερομηνίας. :) -JustinΛύση για ευρωπαϊκές μορφές https://sharepointbydummies.WordPress.com/2011/07/13/possible-work-around-to-Date-format-Issue-SharePoint-2010/
ημερομηνίας 10/11/2011 6:45 AM Γεια και πάλι Justin, FYI, βρήκα μια λύση για το πρόβλημα που ανέφερα προηγουμένως σε αυτήν τη σελίδα.Ευρωπαϊκές μορφές
ημερομηνιών 10/7/2011 3:59 AM Γεια σου, Τζάστιν. Αυτή είναι μια πραγματικά καλή λύση χάρη, και ακριβώς το είδος των πράγμα που έχω περάσει τις τελευταίες δύο ημέρες που αναζητούν! Ωστόσο, είμαι έχοντας ένα μικρό πρόβλημα με αυτό και ήλπιζα ότι θα μπορούσατε να με βοηθήσετε. Έχω τροποποιήσει τον κώδικά σας λίγο για να calcultate τον αριθμό των ημερών μέχρι να συμβεί κάτι, και όχι επειδή, αλλάζοντας τις μεταβλητές στην τελευταία γραμμή της συνάρτησης "DateDiff". <XSL: Value-of Select = "$JulianToday-$JulianStartDate" ></XSL: Value-of> Ωστόσο, είμαι μόνο σε θέση να το κάνω να caclulate τη διαφορά σωστά τη μισή ώρα. Έτσι, για παράδειγμα με αυτή την ημερομηνία (μορφή ηη/μμ/εεεε); 30/12/2011 Υπολογίζει σωστά, αλλά με αυτή την ημερομηνία (ίδια μορφή) 12/10/2011 Υπολογίζει ως εάν 10-Dec-2011 αντί για 12-Οκτ-2011. Προσπάθησα απλώς να αλλάξω τις θέσεις των τιμών ημέρας και μήνα στη μεταβλητή "JulianStartDate", όπως αυτή. <XSL: with-παράμετρος Name = "month" Select = "δευτερεύουσα συμβολοσειρά (ddwrt: FormatDateTime (string ($StartDate); 1033;" ΕΕΕΕΜΜΗΗ "); 7; 2)"/> <XSL: with-παράμετρος Name = "Day" Select = "δευτερεύουσα συμβολοσειρά (ddwrt: FormatDateTime (string ($StartDate); 1033;" ΕΕΕΕΜΜΗΗ "); 5; 2)"/> Και αυτό διόρθωσε το πρόβλημα με τη δεύτερη ημερομηνία, ωστόσο ήταν εσφαλμένη για την πρώτη ημερομηνία! Έχω επίσης δοκιμάσει να τροποποιήσω τις κλήσεις του FormatDateTime για να χρησιμοποιήσω τα ευρωπαϊκά LCID και διάφορες αλλαγές στην τελευταία παράμετρο του FormatDateTime (π.χ. ddMMyyyy, MMddyyyy) με τις κατάλληλες προσαρμογές των παραμέτρων θέσης της δευτερεύουσας συμβολοσειράς χωρίς επιτυχία. Θα εκτιμούσα ιδιαίτερα οποιαδήποτε συμβουλή μπορείτε να προσφέρετε. Ευχαριστώ, ΚριςΜη κωδικός
9/21/2011 4:27 AM Δεν νομίζω ότι το XSL χαρακτηρίζεται ως λύση "χωρίς κωδικό", καθώς η κατανόηση της γλώσσας XSL δεν είναι για όλους-ωστόσο δεν περιλαμβάνει προγραμματισμό. Εκτός από αυτό: Νίκαια λύση, σας ευχαριστούμε!