POSODOBITEV: To deluje, vendar obstajajo znatne omejitve, ki so opisane v pripombah. To maj še vedno obstati koristen v nekatere okoliščine.
POSODOBITEV 2: V moj trenutni projekt, Uporabniki vedno prenos dokumentov. Kot posledica, Ne izvajam problem kjer MS Word izvaja in misli, da je datoteka je bila preimenovana nanjo. Sem teči v težave, "datoteko je spremenil nekdo drug" in to rešiti prek preprosto semafor vrsto zastave. Uporabnik potreba v sprememba meta podatkovno polje iz svoje privzete vrednosti v nekaj drugega. Na itemupdated() sprejemnik poišče veljavno vrednost tam pred dejansko izvedbo preimenovanja in od takrat, Nisem imel težav. Vaš kilometrine lahko razlikujejo.
Imam stranko zahteva, da spremenite ime datoteke naložili v določeno knjižnico dokumentov v skladu z določeno poimenovanja. API zagotavlja preimenovati"()" metoda. Namesto tega, uporabljamo "MoveTo(…)". Tukaj je minimalno košček kode, da bi to dosegli:
javnih Preglasitev nična ItemAdded(SPItemEventProperties lastnosti) { SPFile f = lastnosti.ListItem.File; f.MoveTo(lastnosti.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
Težavno, samo malo je "lastnosti. ListItem.ParentList.RootFolder.Url". Na MoveTo() metoda zahteva URL. Ki pire niz točk mi v korensko mapo moje trenutne knjižnice dokumentov. To omogučiti mi izogibati se težko kodiranja v moj dogodek sprejemnik.
To je bolj koristno prevod, to does ista stvar, vendar dodeli ime datoteke "Naslov":
javnih Preglasitev nična ItemAdded(SPItemEventProperties lastnosti) { DisableEventFiring(); // Naziv artikla dodelite ime datoteke, sama. // OPOMBA: Ta dodelitev mora potekati preden smo spremeniti samo datoteko. // Kliče posodobitev() na je SPFile zdi, da izniči lastnosti v // nekem smislu. Posodobitve "naslov" ni uspelo, dokler ne da spremeniti (in posodobitev() klic) // so se preselili pred spremembo imena datoteke. lastnosti.ListItem["Naslov"] = lastnosti.ListItem.File.Name; lastnosti.ListItem.Update(); SPFile f = lastnosti.ListItem.File; // Dobili razširitev datoteke. Moramo, da je kasneje. niz spfileExt = nove FileInfo(f.Name).Razširitev; // ID elementa seznama preimenujte datoteko in uporabite pripono datoteke ohraniti // tisti del, nedotaknjena. f.MoveTo(lastnosti.ListItem.ParentList.RootFolder.Url + "/" + lastnosti.ListItem["ID"] + spfileExt); // Zavezati v gibanju. f.Update(); EnableEventFiring(); } |