Η ΕΝΗΜΕΡΩΜΈΝΗ ΈΚΔΟΣΗ: Αυτό λειτουργεί, αλλά υπάρχουν σημαντικοί περιορισμοί που περιγράφονται στα σχόλια. Μπορεί να είναι χρήσιμη στην κάποιο Γέροντα.
Η ΕΝΗΜΕΡΩΜΈΝΗ ΈΚΔΟΣΗ 2: Στο τρέχον έργο μου, Οι χρήστες πάντα αποστολής εγγράφων. Ως εκ τούτου, Δεν τρέχει σε ένα πρόβλημα όπου εκτελείται το MS Word και νομίζει ότι το αρχείο μετονομάζεται σε αυτό. Εγώ έκανα τρακάρω ένα πρόβλημα, "το αρχείο αυτό τροποποιήθηκε από κάποιον άλλο" και αυτό λυθεί μέσω μια απλή σηματοφορέα (semaphore) τύπου σημαία. Οι χρήστες πρέπει να αλλάξτε ένα πεδίο δεδομένων meta από την προεπιλεγμένη τιμή σε κάτι άλλο. Το itemupdated() δέκτης αναζητά μια έγκυρη τιμή εκεί πριν από την εκτέλεση η μετονομασία, και από τότε, Δεν είχα κανένα πρόβλημα. Απόσταση σε μίλια σας μπορεί να διαφέρουν.
Έχω μια απαίτηση του πελάτη για να αλλάξετε το όνομα των αρχείων που φορτώνονται σε μια συγκεκριμένη βιβλιοθήκη εγγράφων να συμμορφώνονται με μια συγκεκριμένη σύμβαση ονομασίας. Το API δεν παρέχει μια μετονομασία"()" μέθοδος. Αντί, χρησιμοποιούμε "MoveTo(…)". Εδώ είναι ένα ελάχιστο κομμάτι του κώδικα για να επιτευχθεί αυτό:
δημόσια παράκαμψη άκυρη ItemAdded(SPItemEventProperties ιδιότητες) { SPFile f = ιδιότητες.ListItem.File; f.MoveTo(ιδιότητες.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
Το μόνο δύσκολο κομμάτι είναι το "ιδιότητες. ListItem.ParentList.RootFolder.Url". Το MoveTo() η μέθοδος απαιτεί μια διεύθυνση URL. Που πουρέ συμβολοσειρά βαθμούς μου στο ριζικό φάκελο μου τρέχουσα βιβλιοθήκης εγγράφων. Αυτό μου επιτρέπει να αποφευχθεί οποιοδήποτε σκληρό κωδικοποίησης στο δέκτη μου εκδήλωση.
Αυτό είναι ένα πιο χρήσιμο έκδοση που κάνει το ίδιο πράγμα, αλλά εκχωρούν το όνομα του αρχείου για να "Τίτλος":
δημόσια παράκαμψη άκυρη ItemAdded(SPItemEventProperties ιδιότητες) { DisableEventFiring(); // Εκχωρήσει τον τίτλο αυτού του στοιχείου στο όνομα του αρχείου, η ίδια. // ΣΗΜΕΊΩΣΗ: Αυτή η ανάθεση δεν πρέπει να λαμβάνει χώρα πριν έχουμε τροποποιήσει το ίδιο το αρχείο. // Καλώντας την ενημέρωση() σχετικά με το SPFile φαίνεται να ακυρώσει τις ιδιότητες σε // κάποια αίσθηση. Ανανεώσεις "Τίτλος" απέτυχε μέχρι που να αλλάξετε (και ενημέρωση() κλήση) // κινήθηκαν μπροστά από την αλλαγή στο όνομα αρχείου. ιδιότητες.Στοιχείο λίστας["Τίτλος"] = ιδιότητες.ListItem.File.Name; ιδιότητες.ListItem.Update(); SPFile f = ιδιότητες.ListItem.File; // Πάρετε την επέκταση του αρχείου. Χρειαζόμαστε που αργότερα. συμβολοσειρά spfileExt = νέα FileInfo(f.Name).Επέκταση; // Μετονομάστε το αρχείο σε αναγνωριστικό στοιχείου λίστας και χρησιμοποιήστε την επέκταση αρχείου για να κρατήσει // το μέρος της ανέπαφη. f.MoveTo(ιδιότητες.ListItem.ParentList.RootFolder.Url + "/" + ιδιότητες.Στοιχείο λίστας["ΑΝΑΓΝΩΡΙΣΤΙΚΌ"] + spfileExt); // Διαπράττουν την κίνηση. f.Update(); EnableEventFiring(); } |