Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Δυναμική dropdown λίστα

Îåêßíçóå áðü ôï ìÝëïò geosieben. Τελευταία δημοσίευση από το μέλος geosieben στις 01-12-2008, 15:21. Υπάρχουν 11 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  03-11-2008, 16:06 45936

    Δυναμική dropdown λίστα

    Γεια σας παιδιά,

    Μέρες τώρα παιδευομαι με ενα θέμα και θα ήθελα αν κάποιος γνωρίζει να βοηθήσει. Εχω δημιουργεί 2 dropdown πεδία σε λίστα του Sharepoint. Το πρόβλημα ειναι οτι θέλω το δεύτερο να εξαρτάται απο το πρώτο (π.χ επιλέγοντας μια χώρα στο πρώτο πεδίο να εμφανίζει τις πόλεις μονάχα της συγκεκριμένης χώρας και οχι όλες που υπάρχουν οπως γίνεται τώρα). Ανάλογα δηλαδή με την επιλογή του πρώτου πεδίου να εμφανίζει τις επιλογές που απευθύνονται σε αυτό το πεδίο. Υπάρχει τρόπος να ενσωματώσω Javascript στο NewForm.aspx της λίστας ωστε να επιτευχθεί κάτι τέτοιο;

    Ευχαριστώ για το χρόνο σας.

  •  03-11-2008, 20:18 45939 σε απάντηση της 45936

    Απ: Δυναμική dropdown λίστα

    ΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩ!

    Ερώτηση για το Sharepoint! ΖΗΤΩΩΩΩ! Πραγματικά δεν καταλαβαίνω πως μπορεί ένα προϊόν να είναι τόσο δημοφιλές αλλά να μην υπάρχουν ερωτήσεις γι αυτό. Ίσως είναι τόσο τέλειο που δεν χρειάζεται κανείς να ρωτήσει τίποτε?

    Σοβαρά τώρα. Αυτό που ζητάς από μόνο του δεν γίνεται αλλά πρέπει να καταλάβεις το γιατί. Το Sharepoint δεν έχει drop down πεδία, έχει choice ή lookup πεδία τα οποία by default γίνονται render ως drop down αν επιτρέπεται μόνο μία επιλογή. Αν επιτρέπονται πολλαπλές επιλογές, τα πεδία γίνονται render ως εξής:

    • Τα choice πεδία γίνονται render ως checkbox list
    • Τα lookup πεδία γίνονται render ως δύο list boxes με τις διαθέσιμες και επιλεγμένες τιμές και μερικά κουμπιά για Add/Remove.

    Από μόνο του το Sharepoint δεν έχει κάποιο ιεραρχικό τύπο για choice ή lookup, ούτε μπορείς να συνδέσεις δύο διαφορετικά lookup που κοιτάζουν την ίδια λίστα. Αναγκαστικά θα πρέπει να βρεις κάποιο workaround. Θα πρέπει να μας πεις τί ακριβώς θέλεις να κάνεις, αλλά θα προσπαθήσω να μαντέψω από αυτά που λες ότι θέλεις να κάνεις μόνο μία επιλογή οπότε δεν χρειάζονται check boxes. Υποθέτω επίσης ότι χρησιμοποιείς lookup πεδίο και όχι choice, οπότε οι τιμές που ζητάς είναι πεδία σε κάποια λίστα

    • Η απλούστερη λύση - Βάλε όλες τις επιλογές σε ένα πεδίο στο στυλ "Χώρα - Πόλη". Μπορεί να μην είναι ωραίο, αλλά δουλεύει χωρίς έξτρα κώδικα και νέα πεδία. Στο Sharepoint ισχύει πραγματικά το "The simplest thing that could possibly work"
    • Η πιο ολοκληρωμένη λύση είναι να φτιάξεις το δικό σου τύπο πεδίου που θα υλοποιεί ακριβώς αυτό που θέλεις: Ένα πεδίο το οποίο θα εμφανίζει δύο drop-down και το δεύτερο θα φιλτράρεται από το πρώτο. Στο Sharepoint θα αποθηκεύεις μόνο μία τιμή (τη δεύτερη) οπότε μπορείς να διατηρήσεις τη λειτουργικότητα του Lookup πεδίου, απλά κάνοντας Inherit από αυτό. Αν πρόκειται να το χρησιμοποιήσεις σε ένα μόνο project μπορείς να κάνεις hard-code τα πεδία που θα εμφανίζονται, διαφορετικά θα πρέπει να πειράξεις τη φόρμα με τις ιδιότητες του πεδίου για να μπορείς να επιλέγεις ποιά πεδία θα εμφανιστούν.
    • Αν δεν έχεις πάρα πολλά δεδομένα, μπορείς να εμφανίσεις τα στοιχεία ως ιεραρχία σε ένα ιεραρχικό drop down. Μιλάμε πάλι για custom πεδίο, αλλά αυτή τη φορά αντί να εμφανίσεις δύο dropdown, εμφανίζεις ένα. Παραλλαγή σε αυτό είναι να εμφανίσεις ένα treeview. Σε αυτή την περίπτωση θα πρέπει να πειράξεις πάλι τις ιδιότητες για να μπορείς να επιλέξεις ποιά πεδία θα εμφανιστούν.
    • Ετοιμάσου να τα σκάσεις. Γερά. Έχουν βγει αρκετές εταιρείες οι οποίες πουλάνε control τα οποία αντιμετωπίζουν τις ελλείψεις του Sharepoint αλλά με σημαντικό κόστος. Συγκρινόμενο με τα controls της Infragistics, Telerik, DeveExpress και με βάση όσα παρέχουν, θα έλεγα υπερβολικό. Από την άλλη, φτιάχνοντας τα δικά σου control σίγουρα θα πληρώσεις περισσότερα απ' όσο κοστίζουν αυτά τα controls. Για παράδειγμα, η kwiz έχει φτιάξει το Dual Lookup Field Type με κόστος $750. Τα διάφορα bundles της kwiz κοστίζουν από $1800 μέχρι $3200. Από την άλλη, πόσο θα σου κοστίσει σε χρόνο, άρα και χρήμα, να φτιάξεις το ίδιο control?

    Για δώσε μερικές επιπλέον πληροφορίες για το τί θέλεις να κάνεις. Ίσως να υπάρχει μία πιο απλή λύση που να κάνει αυτό που θέλεις.

    Υ.Γ. Μπορείς μεν να πειράξεις τις NewForm, EditForm αλλά δεν συνίσταται. Bad, BAD, BAAAAD idea αλλά όχι πάντα. Τα control που βλέπεις σε αυτές τις σελίδες δεν είναι ανεξάρτητα, αλλά ο τρόπος με τον οποίον γίνεται render ένα ListView control το οποίο αναλαμβάνει να εμφανίσει όλα τα πεδία ανάλογα με τον τύπο τους. Υπάρχει μία εναλλακτική, να χρησιμοποιήσεις ένα DataForm web part αντί για το list view, αλλά θα πρέπει πρώτα να αντιμετωπίσεις μερικές δεκάδες bugs όπως ότι δεν θα δουλεύουν πλέον τα attachments.

    Από την άλλη, μπορείς να "φυτέψεις" javascript και να το χρησιμοποιήσεις π.χ. για να μετακινήσεις ένα control στην οθόνη, για να το κρύψεις ή να το εμφανίσεις κλπ. Το πρόβλημα είναι ότι το Sharepoint δεν έχει κάποιο αξιόλογο client-side API οπότε δεν μπορείς να κάνεις πολλά πράγματα. Ακόμα και για να βρεις την τιμή ενός πεδίου θα πρέπει να βασιστείς σε κάποια naming conventions για να βρεις ποιό control εμφανίζει ποιό πεδίο και να το διαβάσεις. Ευτυχώς, η διαδικασία περιγράφεται σε κάποια blog posts αλλά δεν είναι και η ευκολότερη λύση. Το blog του Sharepoint Designer Team είναι μία ενδιαφέρουσα πηγή αν και συνήθως ξεχνάνε να ειδοποιήσουν για τα bugs, ειδικά όσον αφορά το DataFormWebPart. Θα μου πεις, αυτοί το φτιάξανε, οπότε τί να σου πούνε .....


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  04-11-2008, 14:09 45978 σε απάντηση της 45939

    Απ: Δυναμική dropdown λίστα

    Καταρχήν ευχαριστώ πάρα πολύ για την άμεση και πλούσια απάντηση.Ειλικρινά το εκτιμώ αυτο.

    Θέλω να γίνει ο συνδιασμός με οσο το δυνατόν απλούστερο τρόπο.Η πρώτη πρόταση σου έξυπνη αλλα λίγο πρόχειρη.
    Μέρες τώρα σπάω το κεφάλι μου διαβάζω tutorials με καλύτερο αυτο:

    http://sebastiant.blog.com/2023682/#cmts

    και αυτό

    http://dattard.blogspot.com/2007/04/sharepoint-2007-filtered-lookups.html

    παρ' ολα αυτά δεν έχω καταφέρει ακόμα αυτό που θέλω το οποίο στην αρχή θεωρούσα απλούστερο ομως εχει εξελιχθεί σε εφιάλτη μια και
    νόμιζα οτι μπορώ ενσωματώνοντας javascript να το λύσω ομως εις μάτην.

     Δυστυχώς ειμαι ακόμα newbie στο Sharepoint και οπως καταλαβαίνεις παλευω ακόμα με  το NewItem.aspx δίχως αποτέλεσμα.

    Κάποια απλή ιδέα κατα πρότιμηση ενσωμάτωση Javascript δίχως να χρειάζεται να δημιουργήσω νέα πεδία στην λίστα; Απλά θέλω
    να βάλω τον έλεγχο μέσα στην υπάρχουσα λίστα.

    Ευχαριστώ πολύ

  •  04-11-2008, 17:13 45988 σε απάντηση της 45978

    Απ: Δυναμική dropdown λίστα

    Θυμάσαι που σου έλεγα ότι αν χρησιμοποιήσεις το DataFormWebPart την πάτησες? Και τα δύο posts που παραθέτεις το χρησιμοποιούν. Και μετά προσπαθούν να κάνουν αυτό που χρειάζεται είτε με Javascript είτε με XSLT. Το δεύτερο post μάλιστα αναφέρει δύο-τρεις από τις παραξενιές του Sharepoint Designer / DataFormWebPart.

    Θα πρέπει να καταλάβεις ότι αυτό που ζητάς δεν είναι απλό, σε καμμία περίπτωση. Το Sharepoint δεν έχει client-side api και θα πρέπει να χωθείς για τα καλά μέσα στη javascript που δημιουργεί. Στο λέω αυτό γιατί έχω υλοποιήσει ως τώρα όλες τις δυνατές λύσεις (εκτός από το εντελώς νέο custom control). Και custom forms με το DataFormWebPart, και Javascript και XSLT. Και αντιγραφή και τροποποίηση των templates του default ListFormWebPart. Σε πολλές περιπτώσεις χρειάστηκε να χρησιμοποιήσω Reflector για να δω τί κάνει από πίσω το κάθε control και γιατί δεν δουλεύει. Πέρα από λόγους αισθητικής, δεν αξίζει (οικονομικά - χρονικά) να παλέψεις να πειράξεις τις φόρμες, τουλάχιστον όχι για να δείξεις δύο dropdown box.

    Γενικά στο Sharepoint πρέπει να απλουστεύεις τα πράγματα όσο γίνεται περισσότερο. Δυστυχώς, σε πολλές περιπτώσεις αυτό σημαίνει να τα κάνεις ελαφρώς χάλια. Ναι, είναι χοντροκοπιά να βάλεις "Χώρα - Πόλη", αλλά σε ένα project των 1-2 μηνών, αξίζει να ξοδέψεις 1-2 εβδομάδες για να το φτιάξεις? Πίστεψε με, έχεις να δεις πολλά παλούκια. Έχεις δοκιμάσει να κάνεις deployment τη λύση που φτιάχνεις σε κάποιο άλλο server? Όταν έρθει η ώρα να κάνεις deployment για πρώτη φορά υπολόγισε μία ημέρα ολόκληρη απλά για να κάνεις backup/restore.

    Αν θέλεις η φόρμα σου να φαίνεται ωραία και ξέρεις εκ των προτέρων ποιά πεδία θα έχει η λίστα, είναι ίσως καλύτερο να φτιάξεις εντελώς ανεξάρτητες aspx σελίδες για Insert, Update, στο code-behind των οποίων θα κάνεις Insert/Update αντίστοιχα στη λίστα που σε ενδιαφέρει. Έτσι θα έχεις όλες τις δυνατότητες του ASP.NET χωρίς τα προβλήματα του Sharepoint. Έτσι χάνεις λίγο σε "ευελιξία" καθώς δεν θα μπορείς να προσθέτεις χύμα στήλες. Από την άλλη αποφεύγεις όλα τα προβλήματα.

    Τα πιο σημαντικά δεν τα είπες ακόμα. Χρησιμοποιείς Lookup ή choice πεδίο? Τϊ θέλεις να πετύχεις? Ρωτάω τί ψάχνεις ως business functionality, όχι ως HTML implementation. Πολλές φορές μπορείς να βρεις workarounds τα οποία είναι αποδεκτά στους χρήστες κι ας φαίνονται φρικτά στους προγραμματιστές. Το Sharepoint σε μεγάλο βαθμό είναι η τέχνη του workaround και του συμβιβασμού.

    Υ.Γ. Και αν θέλεις να δεις τί μπορείς να πετύχεις παρακάμπτωντας το default functionality, δες το www.alba.edu.gr


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  05-11-2008, 10:40 45997 σε απάντηση της 45988

    Απ: Δυναμική dropdown λίστα

    Το σκέφτηκα λίγο παραπάνω και υπάρχει άλλη μία πιθανότητα, αν και δεν γλυτώνεις το "Χώρα - Πόλη". Μπορείς να έχεις δύο ανεξάρτητα lookup πεδία και με javascript να προσθέσεις ένα changed handler στο Combo της Χώρας το οποίο θα κρύβει τα πεδία του "Χώρα - Πόλη" τα οποία ξεκινάνε με την τιμή του "Χώρα". Ο λόγος που χρειάζεσαι οπωσδήποτε το "Χώρα - Πόλη" είναι ότι το <option> element με το οποίο εμφανίζονται οι επιλογές ενός Combo δεν επιτρέπει να προσθέσεις επιπλέον στοιχεία όπως πχ. κάποιο tag με τη χώρα για να κάνεις το φιλτράρισμα.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  05-11-2008, 14:41 45999 σε απάντηση της 45997

    Απ: Δυναμική dropdown λίστα

    Καταρχήν υπερευχαριστώ για τις απαντήσεις σου. Δυστυχώς φαίνεται πως έπεσα κατευθείαν στα βαθιά. Είναι αλήθεια πως δεν έχω ακόμα τήν απαραίτητη εμπειρία να διεισδύσω τόσο βαθιά στον κώδικα του Sharepoint. Το παλευω μέρες και μέρες το θέμα με το dropdown menu, διάβασα δεν ξέρω κι εγω πόσα tutorials ομως απλα δεν γίνεται. Φαίνεται πως πρέπει να ακολουθήσω την λύση που προτείνεις, έχεις δίκιο οταν ο χρόνος μεταφράζεται σε χρήμα το απλούστερο ειναι όντως το καλύτερο.

    Τα πεδία ειναι Choice που γίνονται display μέσω Drop-down menu και πρόκειται για τα προιόντα μιας εταιρείας οπου στο πρώτο πεδίο επιλέγεται η κατηγορία του προιόντων και στο αλλο τα προιόντα. Οπως καταλαβαίνεις τώρα εμφανίζονται στο πρώτο drop-down menu οι κατηγορίες και στο δεύτερο ολα τα προιόντα. Εκεί ηθελα το φιλτράρισμα να γίνεται ωστε να εμφανίσει μόνο αυτά που απευθύνονται σε αυτή την κατηγορία. Τώρα οπως φαίνεται θα γίνουν σε ενα drop-down "Κατηγορία-Προιόν" με το μόνο ασχημο οτι θα φαίνεται ολόκληρο μακρινάρι. Φαντάσου την κατηγορία "Χαρτικά Είδη" και το προιόν "Φωτογραφικό χαρτί" οπου θα εμφανίζεται πλέον "Χαρτικά Είδη-Φωτογραφικό Χαρτί"...

    Ουφ... Πάντως θα με βλέπεις συχνά εδώ μέσα μια και Sharepoint newbie Smile...

    Και πάλι ευχαριστώ!

  •  05-11-2008, 14:50 46002 σε απάντηση της 45999

    Απ: Δυναμική dropdown λίστα

    geosieben:

    μέσα μια και Sharepoint newbie Smile...

    Πίστεψε με, όλοι newbies είναι στο Sharepoint, ακόμη και οι ειδικοί! Τώρα θα μάθεις τί θα πει "Υπάρχουν κροκόδειλοι στην μπανιέρα σου!" Stick out tongue


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  05-11-2008, 15:24 46006 σε απάντηση της 45999

    Απ: Δυναμική dropdown λίστα

    Καλησπέρα. Υπάρχει και άλλη λογική αλλά δεν ξέρω αν πρέπει να την ακολουθήσεις.

    Η λογική λέει χρησιμοποιώ το SharePoint για όλα τα καλούδια του αλλά στις φόρμες χρησιμοποιώ δικές μου custom κλασσικές σελιδούλες σε ASP.Net για να κάνω την δουλειά μου. Αντικαθιστώ δηλαδή τις newform, editform, displayForm με δικές μου aspx σελίδες που τις αποθηκεύω μέσα στο sharepoint.  Πατώντας το κουμπάκι update στη σελιδούλα ASP.Net με κάποια σεντόνια κώδικα, ενσωματωμένο μέσα στη σελίδα, ενημερώνει τα data στη λίστα.
    Δυστυχώς ή ευτυχώς για κάποιους όταν θέλεις κάτι παραπάνω από το UI σου πέρα από τα (απολύτως) βασικά αυτή η λύση είναι ακόμα... μονόδρομος.
    Διστάζω να σου γράψω λεπτομέρειες διότι αν πάρεις αυτό τον δρόμο δεν έχει γυρισμό.... (back up and restore, maintance, look and feel της εφαρμογής  κλπ κλπ κλπ)






    Manos
  •  05-11-2008, 15:42 46009 σε απάντηση της 46006

    Απ: Δυναμική dropdown λίστα

    Μάνο προτρέχεις! Κάτσε να φτιαχτούν οι σελίδες και μετά βλέπουμε πως θα γίνει το deployment! Devil

    Σοβαρά τώρα, μία custom σελίδα μπορεί άνετα να ενσωματωθεί και σε ένα solution ως χύμα αρχείο και να γίνει deploy χωρίς πολλά προβλήματα. Χρησιμοποιώντας μάλιστα το SPDataSource μπορείς να κάνεις data binding απευθείας από μία λίστα σε ένα ASP.NET control. Αυτό που πραγματικά χάνεις, είναι η δυνατότητα να προσθέτεις ένα πεδίο σε μία λίστα και να τροποποιούνται αυτόματα οι φόρμες της λίστας και το rendering των πεδίων βάση του τύπου τους. Βέβαια, και αυτό μπορείς να το αντιμετωπίσεις ... με κώδικα. Δεν το έχω κάνει ως τώρα, αλλά ένα ASP.NET ASP.NET FormView ή ListView μπορούν άνετα να εμφανίσουν δυναμικά πεδία βάση κάποιων templates.

    Ο Μάνος έχει δίκιο πάντως. Ξεκινώντας με το Sharepoint εύκολα ξεχνάμε ότι βασίζεται σε ASP.NET και μπορούμε να κάνουμε αυτά που θέλουμε χρησιμοποιώντας ASP.NET κώδικα. Το "κόλπο" είναι να βρει κανείς την ισορροπία μεταξύ του ASP.NET και του Sharepoint έτσι ώστε να βγουν τα έργα ευκολότερα και γρηγορότερα.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  05-11-2008, 15:57 46010 σε απάντηση της 46009

    Απ: Δυναμική dropdown λίστα

    Παναγιώτης Καναβός:
    Το "κόλπο" είναι να βρει κανείς την ισορροπία μεταξύ του ASP.NET και του Sharepoint έτσι ώστε να βγουν τα έργα ευκολότερα και γρηγορότερα.


    Συμφωνώ απόλυτα. Επίσης:

    H ανάγκη ύπαρξης προγραμματιστή με advance γνώσεις σε asp.net (μην πω και C#)  για το στήσιμο εφαρμογών σε SharePoint είναι ΑΝΑΓΚΑΙΑ και δυστυχώς όχι ορατή από την αρχή. Αυτά που ευαγγελίζεται το SharePoint τα κάνει μεν αλλά όχι με απλό implementation και wizards!!

    Κουράγιο

    Manos
  •  06-11-2008, 09:44 46043 σε απάντηση της 46010

    Απ: Δυναμική dropdown λίστα

    Ενα πολύ καλό βοήθημα για Sharepoint Development είναι και κάποια Guidance που παρουσιάζουν real world applications (σπάνια αλλά σημαντικά), όπως το SharePoint Guidance

    Nikos Κ.
    ALT.NET
  •  01-12-2008, 15:21 46604 σε απάντηση της 46043

    Απ: Δυναμική dropdown λίστα

    Τελικά βρήκα ένα solution για τα dropdown menu και είναι αυτό:

    http://www.spsdev.com/filter.aspx

    Ομως ελα που έχω να φιλτράρω πάαααααααααααααααααααρα πολλά πεδία! Ετσι ενώ έχω να φιλτράρω το "Χώρα-πόλη" ενώ όλες οι χώρες του κόσμου ειναι γύρω στις 250 και δουλευει μια χαρά, στις πόλεις μου βγάζει μόνο τις 5000 πρώτες!

    Υπάρχει ρύθμιση μέσα απο το Sharepoint να αυξηθούν οι εγγραφές που δείχνει;; Αυτός ο περιορισμός εφαρμόζεται μέσα απο το Sharepoint ή απο το Dropdown άραγε;

    Εκεί εχω κολλήσει τώρα. Οσοι μπορούν να βοηθήσουν...

    Ευχαριστώ για το χρόνο σας,

    Γιώργος 

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems