Δηλαδή, η ερώτηση σου ήταν "Πως θα δείξω τα ονόματα των πεδίων που εμφανίζονται στο default view σε ένα list box"? Γιατί δεν το ρώταγες αυτό από την αρχή?
Αν είχες κάνει από την αρχή μία ξεκάθαρη ερώτηση θα είχες πάρει αμέσως απάντηση. Το έχουμε ξαναπεί ότι πρέπει να δίνουμε προσοχή στο πως κάνουμε τις ερωτήσεις αν θέλουμε να παίρνουμε έγκαιρα απαντήσεις.
Όσον αφορά την ερώτηση, υπάρχει ένας αποδοτικότερος τρόπος να βρεις το view. Όταν καλείς την Lists[] το Sharepoint φορτώνει από πίσω τα metadata για όλες τις λίστες του web. Για να το αποφύγεις αυτό μπορείς να χρησιμοποιήσεις την SPWeb.GetViewFromUrl() η οποία παίρνει σαν παράμετρο το URL του view και σου επιστρέφει απευθείας το αντικείμενο χωρίς να φορτώσει τις πληροφορίες για όλα τα Lists.
Επίσης, θα πρέπει να προσέξεις ότι η site.OpenWeb() σου επιστρέφει μόνο το root site στο site collection σου. Αν υπάρχουν και subsites θα πρέπει να τα ανοίξεις δίνοντας το Url τους. Είναι όντως αυτό που θέλεις να πετύχεις?
Τέλος, γιατί θέλεις να δείξεις τα ονόματα των πεδίων σε dropdown? Τί προσπαθείς να κάνεις? Από το όνομα των drop down υποψιάζομαι ότι προσπαθείς να δημιουργήσεις ιεραρχική σχέση λες και πρόκειται για relational database. Κάτι τέτοιο όμως είναι λάθος, γιατί το Sharepoint απλά δεν είναι βάση δεδομένων. Οι λίστες δεν είναι πίνακες και δεν μπορείς να δημιουργήσεις foreign key constratins ή joins για να συνδέσεις εγγραφές μεταξύ τους. Άσε που η απόδοση οποιουδήποτε query προσπαθήσει να ταιριάξει εγγραφές με τέτοιο τρόπο θα είναι εξαιρετικά αργή.
Αν θέλεις να δημιουργήσεις μία ιεραρχική σχέση μεταξύ list items μπορείς να προσθέσεις ένα lookup πεδίο το οποίο κοιτάει στην ίδια λίστα. Το οποίο και πάλι μας φέρνει βέβαια, στο τί προσπαθείς να πετύχεις?
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos