Kiire & Lihtne: Nimeta SharePoint objekti mudeli kaudu sündmuse vastuvõtja üleslaaditud faili

VÄRSKENDUS: See toimib, kuid on oluliselt piiratud, mida on kirjeldatud kommentaarid. See võib siiski olla kasulik mõned asjaolud.

VÄRSKENDUS 2: Minu praeguse projekti, kasutajatele alati üles laadida dokumente. Selle tulemusena, Ma ei sattunud probleem, kus MS Word töötab ja arvab, et fail on ümbernimetatud seda. Ma ei sattunud probleem, "faili on muutnud keegi teine" ja lahendada see lihtne semafori tüüp lipuga. Kasutajatel peab meta-andmete välja vaikeväärtus midagi muud muutmine. Selle itemupdated() vastuvõtja otsib sobiv väärtus enne tegelikku sooritamist ümber ja sellest ajast, Mul ei olnud mingeid probleeme. Teie kilometraaži võib varieeruda.

Olen klient nõue kindla dokumenditeegi vastavusse konkreetse nimereeglistik üleslaaditud failide nime muutmine. API ei paku "Nimeta()" meetod. Selle asemel, Me kasutame "MoveTo(…)". Siin on kood selle saavutamiseks minimaalne natuke:

 avalik alistada tühine ItemAdded(SPItemEventProperties atribuudid)
        {
            SPFile'i f = omadused.ListItem.File;

            f.MoveTo(atribuudid.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

Ainult keeruline natuke on "omadused. ListItem.ParentList.RootFolder.Url". Selle MoveTo() meetod nõuab URL. Mis hõõrutud string punkte üles mind root kausta Minu praegune dokumenditeegi. See võimaldab mul vältida mis tahes raske kodeerimine minu sündmuse vastuvõtja.

See on kasulikum versioon, mis teeb sama asja, Aga määrab faili nimi "Tiitel":

 avalik alistada tühine ItemAdded(SPItemEventProperties atribuudid)
        {
            DisableEventFiring();

            // Määrata selle üksuse pealkiri ise faili nimi.
 // MÄRKUS: Ülesanne peab toimuma enne, kui me ise faili muutmiseks.
 // Kutsudes värskendamine() kohta ning SPFile'i näib muutvat kehtetuks atribuute
 // mõnes mõttes.  "Pealkiri uuendused" ei saanud enne, et muuta (ja update() kõne)
 // teisaldati ees muutus faili nimi.
            atribuudid.ListItem["Tiitel"] = omadused.ListItem.File.Name;

            atribuudid.ListItem.Update();

            SPFile'i f = omadused.ListItem.File;

            // Saada laiendamine fail.  Me vajame, et hiljem.
 stringi spfileExt = Uus FileInfo(f.Name).Laiendamine;

            // Nimetage fail loendist kirje ID ja faililaiend kasutada, et hoida
 // et osa sellest puutumata.
            f.MoveTo(atribuudid.ListItem.ParentList.RootFolder.Url +
                "/" + atribuudid.ListItem["ID"] + spfileExt);

            // Liikuda endale.
            f.Update();

            EnableEventFiring();
        }

4 mõtteid "Kiire & Lihtne: Nimeta SharePoint objekti mudeli kaudu sündmuse vastuvõtja üleslaaditud faili

  1. Nime pole
    Ka, Kui sa seda Wordis, see tagasi viga ja öelda, et faili pole olemas. On räägitud uus URL. Ma ei ole veel leidnud viisi selle ümber.
    Vastus
  2. Paul Galvin
    Täname meenutanud mis. Ma ei tea, et üks vastus kas … huvitav näha, kuidas hallata seda.
    RE: asünkroonse & ümbersuunamine
    Ma ei tea, kui mõne ItemAdding kolimist lahendaks seda. See on suur auk.
    Tänud!
    –Paul
    Vastus
  3. Nadeem Mitha
    Sest fail teisaldatakse asünkroonselt, on võimalus suunatakse ümber EditForm.aspx enne liikuma on võtnud (ja mis on halb). Näete, et see juhtub siis, kui teete magama enne MoveTo rida koodi. Ma pole Mustriline välja riskide selle probleemi peale kasutades kohandatud Redigeeri vormi kohta.
    Vastus

Jäta vastus

Teie e-posti aadressi ei avaldata. Kohustuslikud väljad on tähistatud *