שנעל & גרינג: רענאַמע ופּלאָאַדעד טעקע ניצן שאַרעפּאָינט אָבדזשעקט מאָדעל וויאַ אַן עווענט ריסיווער

דערהייַנטיקן: 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:

 עפנטלעך אָווועררייד פּאָסל יטעמאַדדעד(ספּיטעמעווענטפּראָפּערטיעס פּראָפּערטיעס)
        {
            ספּפילע F = פּראָפּערטיעס.ליסטיטעמ.פילע;

            פ.מאָוועטאָ(פּראָפּערטיעס.ליסטיטעמ.פּאַרענטליסט.ראָאָטפאָלדער.ורל + "/xyzzy.doc");
            פ.ופּדאַטע();

        }

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":

 עפנטלעך אָווועררייד פּאָסל יטעמאַדדעד(ספּיטעמעווענטפּראָפּערטיעס פּראָפּערטיעס)
        {
            דיסאַבלעעווענטפירינג();

            // באַשטימען די טיטל פון דעם נומער צו דעם נאָמען פון טעקע זיך.
 // נאָטיץ: דאס אַסיינמאַנט מוזן נעמען אָרט איידער מיר מאָדיפיצירן דער טעקע זיך.
 // פאַך דערהייַנטיקן() אויף די ספּפילע מיינט צו ינוואַלידייט די פּראָפּערטיעס אין
 // עטלעכע זינען.  Updates to "Title" ניט אַנדערש ביז אַז ענדערונג (און דערהייַנטיקן() רופן)
 // זענען אריבערגעפארן אין פראָנט פון די טוישן צו דער טעקע נאָמען.
            פּראָפּערטיעס.ליסטיטעם["Title"] = Properties.ListItem.File.Name;

            פּראָפּערטיעס.ליסטיטעמ.ופּדאַטע();

            ספּפילע F = פּראָפּערטיעס.ליסטיטעמ.פילע;

            // באַקומען די פאַרלענגערונג פון דער טעקע.  מיר דאַרפֿן אַז שפּעטער.
 שטריקל ספּפילעעקסט = נייַ טעקע אינפֿאָרמאַציע(f.Name).געשפּרייט;

            // רענאַמע דער טעקע צו די רשימה נומער ס שייַן און נוצן די טעקע געשפּרייט צו האַלטן
 // אַז טייל פון עס בעשאָלעם.
            פ.מאָוועטאָ(פּראָפּערטיעס.ליסטיטעמ.פּאַרענטליסט.ראָאָטפאָלדער.ורל +
                "/" + פּראָפּערטיעס.ליסטיטעם["ID"] + ספּפילעעקסט);

            // טוען די רירן.
            פ.ופּדאַטע();

            ענאַבלעעווענטפירינג();
        }

4 געדאנקען אויף "שנעל & גרינג: רענאַמע ופּלאָאַדעד טעקע ניצן שאַרעפּאָינט אָבדזשעקט מאָדעל וויאַ אַן עווענט ריסיווער

  1. קיין נאָמען
    אויך, אויב איר טאָן דעם פון ין וואָרט, עס וועט צוריקקומען אַ טעות און זאָגן דער טעקע טוט נישט עקסיסטירן. עס איז נישט דערציילט וועגן די נייַ URL. איך האב נישט נאָך געפונען אַ וועג אַרום דעם.
  2. פאולוס גאַלווין
    Thanks for pointing that out. I don’t know an answer to that one either … וועט זייַן טשיקאַווע צו זען ווי צו פירן עס.
    שייַעך: אַסינק & רידערעקשאַן
    I wonder if moving it to an ItemAdding will solve it. That’s a big hole.
    דאַנק!
    –פאולוס
  3. נאַדעעם מיטהאַ
    ווייַל דער טעקע געץ אריבערגעפארן אַסינטשראָנאָוסלי, עס איז אַ מעגלעכקייט פון זייַענדיק רידערעקטיד צו עדיטפאָרמ.אַספּקס איידער דער מאַך איז באגאנגען (און אַז ס 'שלעכט). You’ll see that this happens if you make the code sleep before the MoveTo line. I still haven’t figured out what can be done about that problem aside from using a customized edit form.

לאָזן אַ ענטפער צו נאַדעעם מיטהאַ באָטל מאַכן ענטפער

אייער בליצפּאָסט אַדרעס וועט ניט זיין ארויס. Required fields are marked *