განახლების: This works but there are significant limitations which are described in the comments. This may still be useful in some cirumstances.
განახლების 2: ჩემი მიმდინარე პროექტის, users always upload documents. შედეგად, I don’t run into a problem where MS Word is running and thinks that the file was renamed on it. I did run into a problem, "the file was modified by someone else" and solved this via a simple semaphore type flag. Users need to change a meta data field from its default value to something else. The itemupdated() მიმღები ეძებს მოქმედი ღირებულება არსებობს, სანამ რეალურად ასრულებენ გადარქმევა და მას შემდეგ, I have not had any problems. Your mileage may vary.
I have a client requirement to change the name of files uploaded to a specific document library to conform with a particular naming convention. The API does not provide a "rename()" მეთოდი. ამის ნაცვლად, ჩვენ ვიყენებთ "MoveTo(…)". Here is a minimal bit of code to accomplish this:
საჯარო override ცნოს ItemAdded(SPItemEventProperties თვისებები) { SPFile f = properties.ListItem.File; f.MoveTo(properties.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
The only tricky bit is the "properties.ListItem.ParentList.RootFolder.Url". The MoveTo() method requires a URL. That mashed up string points me to the root folder of my current document library. This allows me to avoid any hard coding in my event receiver.
ეს არის უფრო სასარგებლო ვერსია, რომ იგივეს შვება, but assigns the name of the file to "Title":
საჯარო override ცნოს ItemAdded(SPItemEventProperties თვისებები) { DisableEventFiring(); // მიანიჭეთ ტიტული ამ ელემენტის სახელით ფაილი თვით. // შენიშვნა: ეს დავალება უნდა მოხდეს, სანამ ცვლილებები ფაილი თვით. // მოვუწოდებთ განახლება() on SPFile ჩანს გაუქმების ქონების // გარკვეული. Updates to "Title" ვერ მოხერხდა, სანამ, რომ ცვლილება (და განახლება() მოვუწოდებთ) // იყო გადაინაცვლა ცვლილება ფაილი სახელი. properties.ListItem["Title"] = Properties.ListItem.File.Name; properties.ListItem.Update(); SPFile f = properties.ListItem.File; // მიიღეთ გაგრძელების ფაილი. ჩვენ გვჭირდება, რომ მოგვიანებით. სიმებიანი spfileExt = ახალი ფაილის სტატისტიკა(f.Name).გაფართოება; // Rename the file to the list item's ID and use the file extension to keep // that part of it intact. f.MoveTo(properties.ListItem.ParentList.RootFolder.Url + "/" + properties.ListItem["ID"] + spfileExt); // Commit the move. f.Update(); EnableEventFiring(); } |