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

 

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

Accessing fields of a Sharepoint list

Îåêßíçóå áðü ôï ìÝëïò dgg. Τελευταία δημοσίευση από το μέλος dgg στις 03-07-2009, 12:47. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  22-05-2009, 12:11 50895

    Accessing fields of a Sharepoint list

    Γειά σας,

    Με τον παρακάτω κώδικα έχω πάρει όλα τα fields απο μια λίστα:

     

    using (SPSite site = new SPSite(SPContext.Current.Site.Url))
                {
                    using (SPWeb web = site.OpenWeb())
                    {

                        SPList tempList = web.Lists["MyCustomList"];
                                    
                        foreach(SPField field in tempList.Fields)
                        {
                            
                        }
                    }
                }

     

    Υπάρχει τρόπος μέσα στο foreach, να ελέγξω αν αυτό το field είναι ορισμένο και ως coloumn στη λίστα;

    Χρειάζομαι να εμφανίσω τα titles των column μόνο.

     

  •  22-05-2009, 12:24 50896 σε απάντηση της 50895

    Απ: Accessing fields of a Sharepoint list

    Ο κώδικας ήδη σου επιστρέφει τα columns. Ή μάλλον, column και field είναι το ίδιο πράγμα. Τον τίτλο μπορείς να τον βρεις από την SPField.Title.  Μήπως εννοείς, αν εμφανίζεται σε κάποιο view? Μπορείς να βρεις τα πεδία που χρησιμοποιεί ένα View από το SPView.ViewFields property. Το default view μίας λίστας (συνήθως το AllItems) το βρίσκεις με την SPList.DefaultView. Την λίστα όλων των views την βρίσκεις με το SPList.Views.

    Αλήθεια, τί προσπαθείς να κάνεις? Αν θέλεις απλά να δείξεις κάπου τα ονόματα των πεδίων το Title σε βολεύει. Αν όμως θέλεις να τα χρησιμοποιήσεις σε κώδικα, π.χ. για να φτιάξεις ένα query ή σαν index σε κάποιο SPFieldCollection, καλύτερα να κοιτάξεις τα ID και InternalName properties.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  01-07-2009, 10:12 52109 σε απάντηση της 50896

    Απ: Accessing fields of a Sharepoint list

    Λίγο καθυστερημένα αλλά τελικά βρήκα λύση.

    Εκείνο που χρειαζόμουν όντως ήταν τα columns που βρίσκονταν στο επιλεγμένο κάθε φορά default view. Το έκανα έτσι:

     

                using (SPSite site = new SPSite(url))
                {
                    using (SPWeb web = site.OpenWeb())
                    {

                        SPList tempList = web.Lists[listName];
                        SPView defaultView = tempList.DefaultView;
                        SPViewFieldCollection viewFields = defaultView.ViewFields;

                        foreach (string s in viewFields)
                        {
                            this.ParentField.Items.Add(s); // ParentField kai ChildField 2 DropDownList poy gemizoun me ta column titles.
                            this.ChildField.Items.Add(s);
                        }
                    }
                }

     

  •  01-07-2009, 15:47 52144 σε απάντηση της 52109

    Απ: Accessing fields of a Sharepoint list

    Δηλαδή, η ερώτηση σου ήταν "Πως θα δείξω τα ονόματα των πεδίων που εμφανίζονται στο 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
  •  03-07-2009, 12:47 52206 σε απάντηση της 52144

    Απ: Accessing fields of a Sharepoint list

    Βασικά αυτό που προσπαθώ, είναι να φτιάξω ένα custom field το οποίο θα εμφανίζει στο χρήστη ένα TreeView, το οποίο θα χτίζεται βάση ενός taxonomy list (με parent- child τιμές). Κάτι σαν το Tagging Feature της KeyWizCom (το δικό μου κάνει και search Wink). Για να μην έχω καρφωμένες τις τιμές ονόματος της λίστας και των parent-child columns στον κώδικα τα έβαλα σαν properties στο field. Επίσης αν κάποια στιγμή αυτή η λίστα αλλάξει ή κάποιο απο τα columns αλλάξει να μην χρειάζεται αλλαγή ο κώδικας. Τα properties είναι, 3 DropDownLists. Το πρώτο γεμίζει με όλες τις λίστες του root site του site collection. Τα άλλα 2 γεμίζουν με τα columns της λίστας που έχει επιλέξει ο χρήστης στο πρώτο dropdown.

    Αυτά παίζουν, απλά είχα θέμα, οτι τα column στα δύο dropdown γέμιζαν με πάρα πολλές τιμές που ουσιαστικά δε χρειαζόμουν. Μετά την ιδέα που μου έδωσες ανακάλυψα ότι χρειαζόμουν μόνο αυτά που υπάρχουν στο default view. Γενικώς δουλεύει τώρα δεν έχω κάποιο πρόβλημα. Θα κοιτάξω αν είναι το θέμα του performance που είπες, να αφαιρέσω το Lists[]. Όντως σε εκέινο το σημείο έχω το όνομα της λίστας και το url, λογικά κάπως να καλέσω getviewfromurl.

    Ευχαριστώ και πάλι, πολύ σημαντικές οι παρατηρήσεις και οι ιδέες.

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