עדכון: זה עובד אבל יש מגבלות משמעותיות שיפורטו על דבריו. זה עדיין יכול להיות שימושי ב כמה כפויה.
עדכון 2: בפרוייקט הנוכחי שלי, משתמשים תמיד להעלות מסמכים. כתוצאה מכך, אני לא רץ לתוך בעיה בו MS-Word פועל וחושב כי הקובץ שונה שם על זה. נתקלתי בעיה, "הקובץ השתנה על-ידי מישהו אחר" פתרת את זה באמצעות דגל סוג פשוט סמפור. משתמשים צריכים לשנות שדה נתונים meta מערך ברירת המחדל שלה למשהו אחר. Itemupdated() מקלט נראה עבור ערך חוקי לפני למעשה ביצוע שינוי מאז, לא הייתה לי שום בעיות. המילים שלך עשוי להשתנות.
יש לי דרישה של הלקוח כדי לשנות את השם של הקבצים המועלים לספריית מסמכים ספציפיים כדי להתאים עם מוסכמה מסוימת. ה-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. זה פירה מחרוזת נקודות אותי אל תיקיית הבסיס של ספריית המסמך הנוכחי שלי. זה מאפשר לי להימנע כל קידוד קשיח בתוך השפופרת האירוע שלי.
זוהי גרסה יותר שימושי זה עושה את אותו הדבר, אבל מקצה את השם של הקובץ "Title":
הציבור עקיפה void 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(); } |