VÄRSKENDUS: See toimib, kuid on oluliselt piiratud, mida on kirjeldatud kommentaarid. See võib siiski olla kasulik mõned asjaolud.
VÄRSKENDUS 2: Minu praeguse projekti, kasutajatele alati üles laadida dokumente. Selle tulemusena, Ma ei sattunud probleem, kus MS Word töötab ja arvab, et fail on ümbernimetatud seda. Ma ei sattunud probleem, "faili on muutnud keegi teine" ja lahendada see lihtne semafori tüüp lipuga. Kasutajatel peab meta-andmete välja vaikeväärtus midagi muud muutmine. Selle itemupdated() vastuvõtja otsib sobiv väärtus enne tegelikku sooritamist ümber ja sellest ajast, Mul ei olnud mingeid probleeme. Teie kilometraaži võib varieeruda.
Olen klient nõue kindla dokumenditeegi vastavusse konkreetse nimereeglistik üleslaaditud failide nime muutmine. API ei paku "Nimeta()" meetod. Selle asemel, Me kasutame "MoveTo(…)". Siin on kood selle saavutamiseks minimaalne natuke:
avalik alistada tühine ItemAdded(SPItemEventProperties atribuudid) { SPFile'i f = omadused.ListItem.File; f.MoveTo(atribuudid.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
Ainult keeruline natuke on "omadused. ListItem.ParentList.RootFolder.Url". Selle MoveTo() meetod nõuab URL. Mis hõõrutud string punkte üles mind root kausta Minu praegune dokumenditeegi. See võimaldab mul vältida mis tahes raske kodeerimine minu sündmuse vastuvõtja.
See on kasulikum versioon, mis teeb sama asja, Aga määrab faili nimi "Tiitel":
avalik alistada tühine ItemAdded(SPItemEventProperties atribuudid) { DisableEventFiring(); // Määrata selle üksuse pealkiri ise faili nimi. // MÄRKUS: Ülesanne peab toimuma enne, kui me ise faili muutmiseks. // Kutsudes värskendamine() kohta ning SPFile'i näib muutvat kehtetuks atribuute // mõnes mõttes. "Pealkiri uuendused" ei saanud enne, et muuta (ja update() kõne) // teisaldati ees muutus faili nimi. atribuudid.ListItem["Tiitel"] = omadused.ListItem.File.Name; atribuudid.ListItem.Update(); SPFile'i f = omadused.ListItem.File; // Saada laiendamine fail. Me vajame, et hiljem. stringi spfileExt = Uus FileInfo(f.Name).Laiendamine; // Nimetage fail loendist kirje ID ja faililaiend kasutada, et hoida // et osa sellest puutumata. f.MoveTo(atribuudid.ListItem.ParentList.RootFolder.Url + "/" + atribuudid.ListItem["ID"] + spfileExt); // Liikuda endale. f.Update(); EnableEventFiring(); } |