Nopea & Helppoa: Nimeä ladattu tiedosto SharePoint-objektimallin kautta tapahtuma vastaanottimen avulla

PÄIVITYS: Tämä toimii mutta merkittäviä rajoituksia, jotka kuvataan kommentteja. Tämä voi silti olla hyötyä joissakin cirumstances.

PÄIVITYS 2: Minun nykyisen projektin, käyttäjät aina ladata asiakirjoja. Tämän seurauksena, Ei törmätä ongelmaan Jos MS Word on käynnissä ja ajattelee, että tiedosto nimettiin sitä. Törmätä ongelmaan, "Tiedostoa muokattiin joku muu" ja ratkaista tämä yksinkertainen semafori tyyppi lippu. Käyttäjä kaivata jotta heilahdus meta-tietokentän oletusarvon mukainen jotain muuta. Itemupdated() vastaanotin etsii kelvollinen arvo ennen varsinaista nimeä ja sen jälkeen, Ei ole ollut mitään ongelmia. Sinun mittarilukema voivat vaihdella.

Olen asiakas vaatimus muuttaa nimeä tiedostoja ladataan tietyssä asiakirjakirjastossa, erityisesti nimeämiskäytännön mukainen. API ei ole "-nimeä()" menetelmä. Sen sijaan, Käytämme "MoveTo(…)". Tässä on pieni vähän koodia toteuttaa tämän:

 yleiset Ohita mitättömäksi ItemAdded(SPItemEventProperties ominaisuudet)
        {
            SPFile f = ominaisuudet.ListItem.File;

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

        }

Vain hankala vähän on "ominaisuudet. ListItem.ParentList.RootFolder.Url". MoveTo() menetelmässä URL. Että muussattu ylös merkkijono pistettä minulle minun nykyisen asiakirjakirjaston pääkansioon. Tämä antaa minulle välttää mitään kovaa koodaus minun tapahtuma vastaanotin.

Tämä on enemmän hyötyä versio, joka ei sama asia, mutta määrittää tiedoston nimi "Title":

 yleiset Ohita mitättömäksi ItemAdded(SPItemEventProperties ominaisuudet)
        {
            DisableEventFiring();

            // Määrittää tämän kohteen otsikko itse tiedoston nimi.
 // HUOMAUTUS: Toimeksianto on toteutettava ennen kuin itse-tiedoston muokkaaminen.
 // Jossa päivitys() jäsenen SPFile-tiedoston näyttää estävän ominaisuudet
 // jossain mielessä.  Päivitykset "osastoon" epäonnistui, kunnes se muuta (ja päivittää() Soita)
 // tiedostonimen edessä muutos siirrettiin.
            ominaisuudet.Luettelokohde["Otsikko"] = ominaisuudet.ListItem.File.Name;

            ominaisuudet.ListItem.Update();

            SPFile f = ominaisuudet.ListItem.File;

            // Saat tiedoston tunniste.  Tarvitsemme sitä myöhemmin.
 merkkijono spfileExt = Uusi Fribidi(f.Name).Laajennus;

            // Nimeä tiedosto luettelokohteen tunnus ja käyttää tiedostotunnistetta pitämään
 // se ennallaan.
            f.MoveTo(ominaisuudet.ListItem.ParentList.RootFolder.Url +
                "/" + ominaisuudet.Luettelokohde["ID"] + spfileExt);

            // Vahvista liikkua.
            f.Update();

            EnableEventFiring();
        }

4 ajatuksia ”Nopea & Helppoa: Nimeä ladattu tiedosto SharePoint-objektimallin kautta tapahtuma vastaanottimen avulla

  1. Nimeä ei ole
    Myös, Jos teet tämän päässä Wordissa., se palauttaa virheen ja sanovat, tiedostoa ei ole. Ole kertonut uusi URL-osoite. En ole vielä löytänyt kiertää.
    Vastaus
  2. Paul Galvin
    Kiitos huomautuksesta. En tiedä vastausta että yksi joko … on mielenkiintoista nähdä, miten hallita sitä.
    RE: Asynkroninen & uudelleenohjaus
    Ihmettelen jos siirtyminen ItemAdding ratkaista sen. Se on iso reikä.
    Kiitos!
    –Paul
    Vastaus
  3. Nadeem Mitha
    Koska tiedosto saa siirtää asynkronisesti, on mahdollisuus ohjataan EditForm.aspx ennen siirron tekemistä (ja se on huono). Näet, että näin tapahtuu, jos teet nukkumaan ennen MoveTo-rivillä koodi. En ole vielä tajunnut, mitä voidaan tehdä siitä ongelmasta ohella käyttää mukautettuja muokkauslomake.
    Vastaus

Jätä vastaus

Sähköpostiosoitettasi ei julkaista. pakolliset kentät on merkitty *