AKTUALIZÁCIA: To funguje, ale existujú významné obmedzenia, ktoré sú opísané v poznámkach. To môže byť užitočné v niektorých okolnosti.
AKTUALIZÁCIA 2: V môj súčasný projekt, užívatelia vždy nahrať dokumenty. V dôsledku, Nechcem bežať do problému kde MS Word pracuje a myslí, že súbor bol premenovaný na to. Som naraziť na problém, "súbor bol zmenený iným používateľom" a riešiť to cez jednoduché semafor typu príznak. Používatelia musia zmeniť pole meta data z predvolenú hodnotu niečo iné. Itemupdated() prijímač vyhľadáva platnú hodnotu tam pred rezervujú premenovať a odvtedy, Nie som nemal žiadne problémy. Vaša najazdených kilometrov sa môžu líšiť.
Mám klienta požiadavka na zmenu názvu súbory nahrané do určitej knižnice dokumentov na dodržanie najmä konvencia. API neposkytuje premenovať"()" metóda. Namiesto toho, Používame "MoveTo(…)". Tu je trochu minimálne kódu na dosiahnutie tohto cieľa:
verejné override neplatné ItemAdded(SPItemEventProperties vlastnosti) { Súbor SPFile f = vlastnosti.ListItem.File; f.MoveTo(vlastnosti.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
Len záludné bit je "vlastnosti. ListItem.ParentList.RootFolder.Url". MoveTo() metóda vyžaduje adresu URL. Ktoré kaša sa reťazec bodov ma do koreňového priečinka moje súčasné knižnici dokumentov. To mi umožňuje vyhnúť akejkoľvek ťažko kódovanie v môj príjemca udalosti.
Je to oveľa užitočnejšie verziu, ktorá robí to isté, ale priradí názov súboru "Titul":
verejné override neplatné ItemAdded(SPItemEventProperties vlastnosti) { DisableEventFiring(); // Názov tejto položky priradiť názov súboru, samotný. // POZNÁMKA: Toto priradenie sa musí uskutočniť pred upravíme samotný súbor. // Volanie aktualizácie() na SPFile zdá narúšali vlastnosti // niektoré zmysel. Zmenách v hlavy"" zlyhala, kým to zmeniť (a aktualizácia() hovor) // boli premiestnené pred zmenou názvu súboru. vlastnosti.ListItem[„Hlava"] = vlastnosti.ListItem.File.Name; vlastnosti.ListItem.Update(); Súbor SPFile f = vlastnosti.ListItem.File; // Načítať príponu súboru. Potrebujeme, že neskôr. reťazec spfileExt = nové FileInfo(f.name).Rozšírenie; // Premenujte súbor identifikácii položky zoznamu a používajú príponu udržať // časť neporušené. f.MoveTo(vlastnosti.ListItem.ParentList.RootFolder.Url + "/" + vlastnosti.ListItem["ID"] + spfileExt); // Zaviazať prechod. f.Update(); EnableEventFiring(); } |