АКТУАЛИЗИРАНЕ: Това работи, но има съществени ограничения, които са описани в коментарите. Това все още може да бъде полезна в някои обстоятелствата.
АКТУАЛИЗИРАНЕ 2: В сегашния си проект, Потребителите винаги качване на документи. Като резултат, Аз не тичам в проблем, когато MS Word работи и мисли, че файлът е бил преименуван на него. Аз тичам в проблем, "файлът е променен от друг" и това решени чрез проста семафор тип флаг. Потребителите трябва да промените мета данни поле от стойността й по подразбиране на нещо друго. Itemupdated() приемник търси валидна стойност там, преди действително да се извършва Преименуване и оттогава, Не съм имал никакви проблеми. Вашият километраж може да варира.
Имам клиент изискване за промяна на името на качените файлове качени в конкретен документ библиотека да се съобрази с конкретен именуване конвенция. API не предвижда "Преименуване()" метод. Вместо това, Ние използваме "Движа(…)". Тук е минимален малко код, за да постигнем това:
обществени замени невалидни ItemAdded(SPItemEventProperties имоти) { SPFile f = свойства.ListItem.File; f.MoveTo(свойства.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
Само сложната малко е "свойства. ListItem.ParentList.RootFolder.Url". Движа() метод изисква URL адрес. Това пюре низ точки ми в главната папка на my текущ документ библиотека. Това ми позволява да се избегне всяко твърд кодиране в моя случай приемника.
Това е по-полезен версия, която прави същото, но Задава името на файла на "Заглавието":
обществени замени невалидни ItemAdded(SPItemEventProperties имоти) { DisableEventFiring(); // Присвояване на заглавието на този елемент към името на самия файл. // ЗАБЕЛЕЖКА: Тази задача трябва да се извършва преди ние променят самия файл. // Призовава актуализация() на SPFile изглежда да се обезсили свойствата в // някои смисъл. Актуализации на "заглавие" не е до това промени (и актуализация() повикване) // са преместени пред промяната в името на файла. свойства.Елемент от списък["Заглавие"] = свойства.ListItem.File.Name; свойства.ListItem.Update(); SPFile f = свойства.ListItem.File; // Вземи разширението на файла. Че трябва по-късно. низ spfileExt = нов FileInfo(f.Name).Разширение; // Преименуване на файл за ИД на елемента от списъка и използвайте разширението на файла, за да // тази част от него непокътнати. f.MoveTo(свойства.ListItem.ParentList.RootFolder.Url + "/" + свойства.Елемент от списък["ИД"] + spfileExt); // Извършване на движение. f.Update(); EnableEventFiring(); } |