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