ĜISDATIGO: Ĉi tiuj laboroj sed estas gravaj limoj kiu estas priskribita en la rimarkoj. Tio ĉi ankoraŭ povas esti utila en kelkaj cirumstances.
ĜISDATIGO 2: En mia nuna projekto, Uzantoj ĉiam alŝutaj dokumentoj. Rezulte, Mi ne kuras en problemo kie f-ino Word estas kuranta kaj pensas ke la dosiero estis renomita sur ĝi. Mi ja kuris en problemo, "La dosiero estis modifita de iu alia" Kaj solvis tion ĉi tra simpla semafora tipa flago. Uzantoj devas ŝanĝi meta datuma kampo de ĝia defaŭlta valoro al io alia. La itemupdated() Ricevilo serĉas validan valoron tie antaŭ ol efektive elfaranta la renomi kaj pro tio ke tiam, Mi ne havis ajnajn problemojn. Via mileage povas varii.
Mi havas klientan postulon ŝanĝi la nomon de dosieroj uploaded al specifa dokumenta biblioteko konformiĝi kun aparta nomanta kongreso. La API ne provizas "renomi()" Metodo. Male, Ni uzas "MoveTo(…)". Ĉi tie estas minimuma peco de kodo plenumi tion ĉi:
Publika Superregi Malplena ItemAdded(SPItemEventProperties Nemoveblaĵoj) { SPFile F = #nemovebla?o.ListItem.Dosiero; F.MoveTo(#Nemovebla?o.ListItem.ParentList.RootFolder.Url + "/Xyzzy.Doc"); F.#?Isdatigo(); } |
La nura delikata peco estas la "nemoveblaĵoj.ListItem.ParentList.RootFolder.Url". La MoveTo() Metodo postulas URL. Kiu pistis supre ŝnuron indikas min al la radika teko de mia nuna dokumenta biblioteko. Tio ĉi permesas min eviti ajnan malfacilan kodiĝon en mia eventa ricevilo.
#Tio ?i estas pli utila versio kiu faras la saman aferon, Sed asignas la nomon de la dosiero "Titoli":
Publika Superregi Malplena ItemAdded(SPItemEventProperties Nemoveblaĵoj) { DisableEventFiring(); // Asigni la titolon de #?i tiu ero al la nomo de dosiero ?i mem. // NOTO: #?I tiu komisio devas okazi #anta? ol ni modifas la dosieron ?i mem. // Vokanta #?isdatigo() Sur la SPFile #?ajni nuligi la #nemovebla?o en // Iu sento. #?Isdatigo "Titoli" Malsukcesita #?is tiu #?an?o (Kaj #?isdatigo() Voko) // Estis movita #anta? la #?an?o al la dosiera nomo. Nemoveblaĵoj.ListItem["Titolo"] = #Nemovebla?o.ListItem.Dosiero.Nomo; #Nemovebla?o.ListItem.#?Isdatigo(); SPFile F = #nemovebla?o.ListItem.Dosiero; // Akiri la #etenda?o de la dosiero. Ni devas ke poste. Ŝnuro SpfileExt = Nova FileInfo(F.Nomo).#Etenda?o; // Renomi la dosieron al la #IDENTIGA?O de la listo ero kaj uzi la dosieran #etenda?o teni // KE parto de ?i sendifekta. F.MoveTo(#Nemovebla?o.ListItem.ParentList.RootFolder.Url + "/" + Nemoveblaĵoj.ListItem["#IDENTIGA?O"] + SpfileExt); // Fari la movon. F.#?Isdatigo(); EnableEventFiring(); } |