Hitro & Enostavno: Preimenovati preneseno datoteko z uporabo SharePoint predmetnega modela preko dogodek sprejemnik

POSODOBITEV: To deluje, vendar obstajajo znatne omejitve, ki so opisane v pripombah. To maj še vedno obstati koristen v nekatere okoliščine.

POSODOBITEV 2: V moj trenutni projekt, Uporabniki vedno prenos dokumentov. Kot posledica, Ne izvajam problem kjer MS Word izvaja in misli, da je datoteka je bila preimenovana nanjo. Sem teči v težave, "datoteko je spremenil nekdo drug" in to rešiti prek preprosto semafor vrsto zastave. Uporabnik potreba v sprememba meta podatkovno polje iz svoje privzete vrednosti v nekaj drugega. Na itemupdated() sprejemnik poišče veljavno vrednost tam pred dejansko izvedbo preimenovanja in od takrat, Nisem imel težav. Vaš kilometrine lahko razlikujejo.

Imam stranko zahteva, da spremenite ime datoteke naložili v določeno knjižnico dokumentov v skladu z določeno poimenovanja. API zagotavlja preimenovati"()" metoda. Namesto tega, uporabljamo "MoveTo(…)". Tukaj je minimalno košček kode, da bi to dosegli:

 javnih Preglasitev nična ItemAdded(SPItemEventProperties lastnosti)
        {
            SPFile f = lastnosti.ListItem.File;

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

        }

Težavno, samo malo je "lastnosti. ListItem.ParentList.RootFolder.Url". Na MoveTo() metoda zahteva URL. Ki pire niz točk mi v korensko mapo moje trenutne knjižnice dokumentov. To omogučiti mi izogibati se težko kodiranja v moj dogodek sprejemnik.

To je bolj koristno prevod, to does ista stvar, vendar dodeli ime datoteke "Naslov":

 javnih Preglasitev nična ItemAdded(SPItemEventProperties lastnosti)
        {
            DisableEventFiring();

            // Naziv artikla dodelite ime datoteke, sama.
 // OPOMBA: Ta dodelitev mora potekati preden smo spremeniti samo datoteko.
 // Kliče posodobitev() na je SPFile zdi, da izniči lastnosti v
 // nekem smislu.  Posodobitve "naslov" ni uspelo, dokler ne da spremeniti (in posodobitev() klic)
 // so se preselili pred spremembo imena datoteke.
            lastnosti.ListItem["Naslov"] = lastnosti.ListItem.File.Name;

            lastnosti.ListItem.Update();

            SPFile f = lastnosti.ListItem.File;

            // Dobili razširitev datoteke.  Moramo, da je kasneje.
 niz spfileExt = nove FileInfo(f.Name).Razširitev;

            // ID elementa seznama preimenujte datoteko in uporabite pripono datoteke ohraniti
 // tisti del, nedotaknjena.
            f.MoveTo(lastnosti.ListItem.ParentList.RootFolder.Url +
                "/" + lastnosti.ListItem["ID"] + spfileExt);

            // Zavezati v gibanju.
            f.Update();

            EnableEventFiring();
        }

4 misli o "Hitro & Enostavno: Preimenovati preneseno datoteko z uporabo SharePoint predmetnega modela preko dogodek sprejemnik

  1. Nobeno ime
    Tudi, Če to storite iz Worda, bo vrnitev napake in reči, datoteke ne obstaja. To ni povedal o novem URL. Nisem še našel pot okoli tega.
    Odgovor
  2. Paul Galvin
    Hvala zakaj interpunkcija to jasno. Ne vem odgovora na enega ali … Zanimivo bo videti, kako upravljati.
    RE: asinhrono & preusmeritev
    Zanima me, če jo premaknete na ItemAdding bo rešiti to. To je velika luknja.
    hvala!
    –Paul
    Odgovor
  3. Aleksander Mitha
    Ker datoteke dobi preselil asinhrono, obstaja možnost preusmerjen na EditForm.aspx pred pohodu (in to je slabo). Boste videli, da se to zgodi Če spremenite šifro pred vrstico MoveTo spanje. Jaz še vedno niso ugotovili, kaj je mogoče storiti glede tega problema, poleg na obrazcu prilagojene urejanje.
    Odgovor

Leave a Reply to Aleksander Mitha preklicati odgovor

Vaš e-naslov ne bo objavljen. Obvezna polja so označena *