Έχω εργαστεί σε αυτό που ελπίζω ότι θα είναι μια σύντομα-κυκλοφόρησε CodePlex έργου που παρέχει ένα ωραίο ολοκληρωμένο κομμάτι των τμημάτων web που μιλούσαν μεταξύ τους μέσω συνδέσεων υπηρεσίας παροχής/καταναλωτή με σκοπό τη διερεύνηση μιας τοποθεσίας του SharePoint κάτω από τα σκεπάσματα. (Αυτό βεβαίως έχει γίνει στο παρελθόν, αλλά αυτό είναι ένα πρόγραμμα εκμάθησης όσο οτιδήποτε άλλο). Αυτό είναι γραφτό να γίνει μια αντικατάσταση για τα windows εξερευνητής άποψη του SharePoint 2010 βιβλιοθήκες εγγράφων.
Ο κώδικας έχει η συνήθης αναδρομική έκκληση προς τα κάτω το SPWeb και SPLists από ένα δεδομένο σημείο. Το αντικείμενο που κάνει όλα που διέρχονται από συσσωρεύεται μια συμβολοσειρά XML που μοιάζει κάπως έτσι:
<συλλογή_τοποθεσιών url =’http://demo2010a:9090′>
<Web
Τίτλος = «Γεια σας κόσμο Sandbox»
Πρότυπο = «μια τοποθεσία για ομάδες για να οργανώσετε γρήγορα, συγγραφέας, και να ανταλλάσσουν πληροφορίες, ΜΠΛΑ ΜΠΛΑ ΜΠΛΑ»><λίστα
Τίτλος = «BCC_Health_Services_FAQs’
Πρότυπο =» CustomList’
ListId =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
</λίστα><λίστα
Τίτλος = «BCC_Notifications»
Πρότυπο = «CustomList»
ListId =’http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1 - 877c - 41c 0-9063-b9612be80d5e’>
</λίστα></Web>
</συλλογή_τοποθεσιών>
Περιμένω να καθαρίσει επάνω το XML πριν από όλα έχουν ειπωθεί και γίνει.
Θα ήθελα να τελικά να πάρετε τις πληροφορίες αυτές, μέχρι και σε ένα στοιχείο ελέγχου Treeview. Δεν είναι ακριβώς γη συγκλονιστικά πράγματα.
Η πρόκληση που πήρα εδώ ήταν να συνδέσει την ιεραρχημένη προβολή με ένα στοιχείο ελέγχου προέλευσης δεδομένων XML αντί να οικοδομούμε με μη αυτόματο τρόπο τις treenodes μου όπως εγώ διασχίζουν το δέντρο. Έκανα αυτό, εν μέρει επειδή είμαι σκόπιμα κάνει τα πράγματα πιο δύσκολο για τον εαυτό μου (Αυτό είναι ένα πρόγραμμα εκμάθησης μετά από όλα) και εν μέρει επειδή έχω αυτό αόριστη ιδέα ότι η δημιουργία κόμβους δέντρο όπως εγώ διασχίζουν το δέντρο δεν είναι μια καλή ιδέα για τους μακροχρόνια ανέργους.
Το πρόβλημα με αυτή την προσέγγιση είναι ότι Treeview ελέγχου δεν γνωρίζει για τις καλές ιδιότητες στους κόμβους ενδιαφέρον όπως "λίστα" ή "web", έτσι ώστε να δείχνει αυτό εξόδου από προεπιλογή:
Αυτό δεν είναι χρήσιμο. Αυτό είναι όπου βοηθά την κλάση TreeNodeBinding μετά την ανάπτυξη. Μπορώ να χρησιμοποιήσω αυτό για να πει το Treeview στοιχείο ελέγχου πώς αυτό θα πρέπει να ερμηνεύσει το XML. Εδώ είναι ένα παράδειγμα:
tnb = νέα TreeNodeBinding μετά την ανάπτυξη();
tnb.DataMember = "λίστα"; // Αυτό είναι η ετικέτα στο xml για μια τοποθεσία.
tnb.TargetField = "listid";
tnb.ValueField = "Τίτλος";
tnb.ToolTipField = "Πρότυπο";
Αυτή η δεσμευτική λέει το treeview που όταν βρίσκει ένα <λίστα> κόμβος στο XML, ισχύουν τα bindings για TargetField, ValueField και ToolTipField. Στο Μαΐου app, αυτά χάρτη ως εξής:
- TargetField: Όταν κάποιος κάνει κλικ σε μια κόμβου τιμή, Αυτό είναι τι θα πάρετε για SelectedNode.Value. Αυτό είναι δεν πρέπει να συγχέεται με...
- ValueField: Αυτό είναι ό, τι θέλετε το Treeview να εμφανίζει στο χρήστη.
- ToolTipField: Η αξία από το αρχείο XML που θέλετε ως συμβουλή εργαλείου.
Προσθέστε ότι η TreeNodeBinding μετά την ανάπτυξη της ιεραρχημένης προβολής του συνδέσεις δεδομένων και να πάρει εξόδου όπως αυτό:
Θα έχω περισσότερο όλα αυτά όπως θα συνεχιστούν και τελικά να βάλει αυτό επάνω σε Codeplex.
</Τέλος>
Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin