OPDATERING: Dette virker, men der er væsentlige begrænsninger, der er beskrevet i kommentarerne. Dette kan stadig være nyttigt i nogle omstaendighederne.
OPDATERING 2: I min aktuelle projekt, brugerne overføre altid dokumenter. Som et resultat, Jeg løbe ikke ind i et problem, hvor MS Word kører og mener, at filen blev omdøbt på det. Jeg løbe ind i et problem, "filen blev ændret af en anden" og løst dette via en simpel semaphore type flag. Brugernes savn hen til ændre en meta datafelt fra standardværdien til noget andet. Af itemupdated() modtageren ser til en gyldig værdi der før du faktisk udfører omdøbe og siden da, Jeg har ikke haft nogen problemer. Din kilometertal kan variere.
Jeg har en klient kravet om at ændre navnet på filer uploades til et bestemt dokumentbibliotek i overensstemmelse med en bestemt navngivningskonvention. API indeholder ikke et "Omdøb()" metode. I stedet, Vi bruger "MoveTo(…)". Her er en minimal smule kode til at opnå dette:
offentlige tilsidesætte void ItemAdded(SPItemEventProperties egenskaber) { SPFile f = egenskaber.ListItem.File; f.MoveTo(egenskaber.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
Den kun tricky bit er "egenskaber. ListItem.ParentList.RootFolder.Url". MoveTo() metoden kræver en URL. Der mosede op streng point mig til rodmappen på mit aktuelle dokumentbibliotek. Dette tillader mig at undgå hårde kodning i min begivenhed modtager.
Dette er en mere nyttige version, der gør de samme ting, men tildeler navnet på filen til "Titel":
offentlige tilsidesætte void ItemAdded(SPItemEventProperties egenskaber) { DisableEventFiring(); // Tildele titlen på denne post til navnet på selve filen. // NOTE: Denne opgave skal finde sted, før vi ændrer selve filen. // Kræver opdatering() på SPFile synes at afkræfte egenskaber i // nogle følelse. Opdateringer til "titel" mislykkedes indtil der ændrer (og opdatering() opkald) // blev flyttet foran ændringen til filnavnet. egenskaber.ListItem["Titel"] = egenskaber.ListItem.File.Name; egenskaber.ListItem.Update(); SPFile f = egenskaber.ListItem.File; // Få en udvidelse af fil. Vi har brug for det senere. streng spfileExt = nye FileInfo(f.Name).Udvidelse; // Omdøb filen til listeelementets ID og bruge fil forlængelsen at holde // del af det intakt. f.MoveTo(egenskaber.ListItem.ParentList.RootFolder.Url + "/" + egenskaber.ListItem["ID"] + spfileExt); // Begå farten. f.Update(); EnableEventFiring(); } |