ACTUALIZARE: Acest lucru funcţionează, dar există limitări semnificative care sunt descrise în Comentarii. Acest lucru poate fi încă utilă în unele circumstanțele.
ACTUALIZARE 2: În proiectul meu curent, utilizatorii întotdeauna Încărcați documente. Ca rezultat al, Eu nu a alerga într-o problemă în cazul în care MS Word se execută şi crede că fişierul a fost redenumit pe ea. I a alerga într-o problemă, "fişierul a fost modificat de altcineva" şi acest lucru rezolvat prin intermediul unui pavilion de tip semafor simplu. Utilizatorii au nevoie pentru a schimba un câmp de date meta la valoarea sa implicită la altceva. Itemupdated() receptor caută o valoare validă de acolo înainte de a efectua de fapt Redenumire şi de atunci, Nu am avut probleme. Poate varia de kilometraj dumneavoastră.
Eu am o cerinţă de client de a schimba numele de fişiere încărcat la o bibliotecă de documente specifice pentru a se conforma cu o convenţie de denumire special. API nu furnizează o Redenumire"()" metoda. În schimb, vom folosi "MoveTo(…)". Aici este un pic minimă de cod pentru a realiza acest lucru:
publice suprascrie nule ItemAdded(SPItemEventProperties proprietăţi) { SPFile f = proprietăţi.ListItem.File; f.MoveTo(proprietăţi.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
Bit înşelător numai este "proprietăţile. ListItem.ParentList.RootFolder.Url". MoveTo() metoda necesită un URL. Care piure şir de puncte de mine la folderul rădăcină al meu curent bibliotecă de documente. Acest lucru permite-mi pentru a evita orice greu de codificare în receptor mea de eveniment.
Aceasta este o versiune mult mai util, care face acelaşi lucru, dar atribuie numele de fişier "Titlul":
publice suprascrie nule ItemAdded(SPItemEventProperties proprietăţi) { DisableEventFiring(); // Atribui titlul de acest element pentru numele fişierului în sine. // NOTĂ: Această misiune trebuie să aibă loc înainte de a ne modifica fişierul în sine. // Actualizare de asteptare() pe SPFile pare să invalideze proprietăţi în // unele sens. Actualizărilor titlu"" nu a reuşit până la această schimbare (şi actualizare() apel) // au fost mutate în faţa schimbarea numele de fişier. proprietăţi.ListItem["Titlul"] = proprietăţi.ListItem.File.Name; proprietăţi.ListItem.Update(); SPFile f = proprietăţi.ListItem.File; // Obţine extensia fişierului. Am nevoie de asta mai târziu. şir spfileExt = noi AuthConfig(f.Name).Prelungire; // Redenumiţi fişierul ID element de listă şi de a folosi extensia de fişier pentru a menţine // că o parte din acesta intacte. f.MoveTo(proprietăţi.ListItem.ParentList.RootFolder.Url + "/" + proprietăţi.ListItem["ID"] + spfileExt); // Se muta. f.Update(); EnableEventFiring(); } |