AKTUALIZACJA: To działa, ale istnieją znaczne ograniczenia, które są opisane w komentarzach. To jeszcze może być przydatne w niektórych przypadkach.
AKTUALIZACJA 2: W bieżącym projekcie, użytkownicy zawsze przesłać dokumenty. W rezultacie, Nie ja biegaæ w pewien problem gdzie MS Word pracuje i myśli, że plik został przemianowany na to. Popaść w problem, "plik został zmodyfikowany przez kogoś innego" i rozwiązać to poprzez flagę typu proste semafor. Użytkownik potrzebować wobec zmienić pole danych meta z domyślnej wartości na coś innego. Itemupdated() Odbiornik szuka prawidłowej wartości przed faktycznie świadczącego zmiany nazwy i od tamtego czasu, Nie miał żadnych problemów. Może się wahać.
Mam klienta wymóg, aby zmienić nazwę plików przesłane do określonej biblioteki dokumentów odpowiadają szczególnym konwencji nazewnictwa. API nie podać nazwy"()" Metoda. Zamiast tego, używamy "MoveTo(…)". Tutaj jest trochę minimalny kod, aby osiągnąć:
publiczne zastępowanie nieważne ItemAdded(SPItemEventProperties właściwości) { SPFile f = właściwości.ListItem.File; f.moveTo(właściwości.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
Trochę trudne, tylko jest "właściwości. ListItem.ParentList.RootFolder.Url". MoveTo() Metoda wymaga adresu URL. Że tłuczone ciąg punktów mnie do głównego folderu mój obecny biblioteki dokumentów. To pozwala mi uniknąć wszelkich twardych kodowania w moim przypadku odbiornika.
To jest bardziej użyteczne wersja, która działa tak samo, ale przypisuje nazwę pliku "Tytuł":
publiczne zastępowanie nieważne ItemAdded(SPItemEventProperties właściwości) { DisableEventFiring(); // Tytuł ten element można przypisać nazwę pliku, sam. // UWAGA: Ten przydział musi nastąpić przed możemy modyfikować sam plik. // Wywołanie aktualizacji() na SPFile wydaje unieważnia właściwości // jakimś sensie. Aktualizacje "Tytuł" nie powiodło się, dopóki zmienić (i aktualizacja() Wywołanie) // zostały przeniesione z przodu zmiany do nazwy pliku. właściwości.ListItem["Tytuł"] = właściwości.ListItem.File.Name; właściwości.ListItem.Update(); SPFile f = właściwości.ListItem.File; // Pobierz rozszerzenia pliku. Potrzebujemy który później. ciąg spfileExt = Nowy FileInfo(f.Name).Rozszerzenie; // Zmień nazwę pliku elementu listy ID i rozszerzenie pliku służy do przechowywania // część jego nienaruszone. f.moveTo(właściwości.ListItem.ParentList.RootFolder.Url + "/" + właściwości.ListItem["IDENTYFIKATOR"] + spfileExt); // Zatwierdzić przeniesienie. f.Update(); EnableEventFiring(); } |