Categoria Arkistot: SharePoint-kehitys

Yksinkertainen selitys: “Arvo ei sisälly odotettuun alueeseen.”

PÄIVITYS: Anonyymi juliste jättänyt kommentin suuri sisäiset nimet. Lue se.

Kun tapahtuma vastaanottimia ja muut koodia, joka viittaa objektimalli kautta SharePoint-Luettelokohteiden käsitteleminen, Tekevät usein virheitä, jotka aiheuttavat tämän virheen Runtime:

Virhe ladattaessa ja käynnissä tapahtuman vastaanottimen Conchango.xyzzyEventReceiver xyzzy, Versio = tulee ilmoittaa yleisessä muodossa, Culture = neutral, PublicKeyToken = 0dc50a750396c3ac. Alla on lisätietoja. : Arvo ei sisälly odotettuun alueeseen.

Mielestäni tämä on melko yleinen virhe, joka johtuu mahdollisesti monin eri tavoin. Kuitenkin, Yksi yksinkertainen selitys on, että olen vertailemalla kentän väärin. Jos kentän nimi on "Määräpäivä", I on viitattava tällä tavoin, tapahtuma-vastaanotin:

ominaisuudet.Luettelokohde["Määräpäivä"]

Kun väärin tai väärässä käyttötapaus, kun viitataan kentän, SharePoint luo edellä mainittujen runtime error. Esimerkiksi, Tämä on väärä:

ominaisuudet.Luettelokohde["määräpäivä"]

</loppu>

Tilaa blogiin.

Technorati Tags:

Nopea & Helppoa: Luo kansio ja liittää sisällön tyyppi (Tai, On Your KPIs ja syödä niitä liian)

Jotta KPI-ongelman Olen kirjoittanut täällä, Valmis jokin todistaa ja löysi että KPI työmäärää kansioita metatietoa samalla tavalla vastaan asiakirjoja tai luettelokohteiden. Todistin sitä luomalla uuden sisältölajin kansion sisällön tyypin ja lisännyt joitakin kenttiä. Olen luonut joitakin indikaattoreita ja ollut itsekseni, jotka KPI: T toimi odotetulla. Tämä oli hyvä uutinen. Se ei ole täydellinen, koska porautuminen saat KPI vastaan kansiot ei ole aivan mitä haluat. Tämä ei ole liikaa haittapuoli minun tapauksessani, koska 1) loppukäyttäjät eivät tiedä mitään parempaa ja 2) porautuminen siirtyy kansioon. Ne napsauttamalla kansion nimeä ja ne ovat kohteen. Se on yhden sijasta kahdella napsautuksella, joka ei ole maailman loppu.

Tämä virtasi mukavasti työtä tein. Luon kansion kaikki asiakirjat, jotka saa ladata. Tämä tapahtuu tapahtuma-vastaanotin. Tämän seurauksena, se on pala kakkua pitää ylemmän tason kansion metatiedon synkronoituina KPI-odotuksiin meta tiedot tiedoston itse koska vesi on jo olemassa. This allows me to have my KPI’s and eat them too 🙂

I-kirjain modified tapahtuma-vastaanotin lisätä kansion ja määrittää uuden kansion sisällön tyyppi mukautetun KPI-friendly sisällön tyyppi. Tämä hieman koodia valmis puijata:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Asiakirjat").Alikansiot;
  SPFolder addedFolder = srcFolders.Add(ominaisuudet.ListItem.ID.ToString());
  SPContentTypeId kpiCT = Uusi SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Sisältötyypin tunnus"] = kpiCT;
  addedFolder.Item.Update();

Etsi todellinen sisältötyypin tunnus, Käyttää sisältötyypin kautta sivuston asetukset ja kopioida/liittää se URL kuten:

kuva

</loppu>

Tilaa blogiin!

Technorati Tags: ,

Nopea ja helppo: Hae SPListItem SPFolder tapahtuma-vastaanotin

Inhoan myöntää sitä, mutta olen taistellut tämän yhden päivän. Minun tapauksessa vastaanotin täytyy päivittää kentän pääkansiosta. Tämä vähän näyttää miten se:

Yksityinen mitättömäksi UpdateParentFolder(SPItemEventProperties ominaisuudet)
{

SPFolder thisItemFolder = ominaisuudet.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ hyväksynnän tila"] = "Hyvä uutinen, kaikki!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

Tässä tapauksessa, Työskentelyn asiakirjakirjastoon ja ominaisuudet ovat lähtöisin ItemAdded-tapahtuma.

Juju on että nimikkeen SPFolder ei saada suoraan itse kohteesta (ts. ominaisuudet.ListItem.Folder on null-arvoinen). Sen sijaan, Siirry luettelokohteen liittyvää tiedostoa ja saada tiedoston kansio.

</loppu>

Tilaa blogiin!

Technorati Tags:

Vielä toisen tapahtuman vastaanottimen virheenkorjauksen temppu

Olen varma, että en ole ensimmäinen, joka keksivät tämän. Kuitenkin, En ole huomannut kukaan Julkaise temppu kuin tämä, koska aloitin tiiviisti yhteisön viime heinäkuussa. Niin, Ajattelin lähettää sen helppo debug-vinkki.

Olen työskennellyt tapahtuma-vastaanotin, joka alkoi tuottaa tämän virheen 12 pesää:

Virhe ladattaessa ja käynnissä tapahtuman vastaanottimen Conchango.xyzzyEventReceiver xyzzy, Versio = tulee ilmoittaa yleisessä muodossa, Culture = neutral, PublicKeyToken = blahbalhbalh. Alla on lisätietoja. : Objektiviittaus objektin esiintymää ei määritetty.

En tiedä missä olin käyttöön tämä vika koska olin tehnyt liian monia asioita yhdessä minun koodi/käyttöönotto/testisyklien.

Yritin Tämä ratkaisu päästä minun ATE sinne toivoo että SharePoint 12 pesää osoittaisi pinon jäljitys, mutta ei onnea. En tiedä jos se on mahdollista, ja jos joku ei, haluta antaa we osata 🙂

Tiedän, että on mahdollista kirjoittaa oman lokiviestit 12 pesää. Suoraan sanottuna, Halusin jotain hieman vähemmän pelottava ja nopeammin toteutettavaa.

Se tapahtui minulle, että saisin vähintään perus jäljitystietojen pyynti-ja uudelleen heitto yleisiä poikkeuksia, kuten tämä:

  Yritä {
    UpdateEditionDate(ominaisuudet);
  }
  saalis (Poikkeus e)
  {
    heittää Uusi Poikkeus("Lähettäjä, UpdateEditionDate(): Poikkeus: [" + e.ToString() + "].");
  }

Tämä näkyi 12 Hive thusly:

Virhe ladattaessa ja käynnissä tapahtuman vastaanottimen Conchango.xyzzyEventReceiver xyzzy, Versio = tulee ilmoittaa yleisessä muodossa, Culture = neutral, PublicKeyToken = blahblahblah. Alla on lisätietoja. : Lähettäjä, UpdateEditionDate(): Poikkeus: [System.NullReferenceException: Objektiviittaus objektin esiintymää ei määritetty. klo Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties ominaisuudet) klo Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties ominaisuudet, Merkkijono eventDescription)].

Että kimmoisuus we minun piti jäljittää tätä ongelmaa yksityiskohtaisesti, ja odotan käyttää sitä paljon menee eteenpäin.

</loppu>

Tilaa blogiin!

Ratkaisu: SPQuery ei etsi kansioita

Tämä viime viikolla, olin täytäntöönpanosta "kehittyy" ratkaisu on asiakas, joka käyttää BDC sekä SPQuery ja joutui vaikeuksia käyttää SPQuery vastaan asiakirjakirjastoon, joka sisältää käyttäjätilikohtaiset kansiot. Bottom line: määrittää "rekursiivinen" kyselyn näkymä-määritteeseen.

Skenaarion:

  • Maanantaina, Asiakirjan lataaminen ja jotkin meta-tiedot.
  • Seuraavalla viikolla, Ladata uuden asiakirjan. Suuri osa tämän uuden asiakirjan metatietoa perustuu latasin maanantaina asiakirjaan (jota kutsumme "perusasiakirjan").
  • Olemme luoneet web service julkisivu, joka tarjoaa BDC-ystävällinen liitäntä luetteloon niin, että käyttäjä kanisteri helposti paikallistaa maanantai asiakirjan kautta otsikko haku.
  • BDC-tietosarakkeen tarjoaa ystävällinen käyttöliittymä. (Tämä on osa minun yritys käyttää BDC enemmän ystävällinen hakusaraketta varten).

Lopullinen yritystietoluettelopalvelua julkisivu käyttää kyselyn näin tehdä haun:

 // Apuna U2U työkalu tuottaa CAML-kysely.
      oQuery.Query =
        "<Jos>";

      Jos (titleFilter.Length > 0)
        oQuery.Query  =
          "  <Ja>";

      oQuery.Query  =
        "    <Ja>" +
        "      <GEQ>" +
        "        <FieldRef nimi =  "DocumentId" />" +
        "        <Arvon tyyppi =  "Teksti, hiiren avulla">" + minId + "</Arvo>" +
        "      </GEQ>" +
        "      <LEQ>" +
        "        <FieldRef nimi =  "DocumentId" />" +
        "        <Arvon tyyppi =  "Teksti, hiiren avulla">" + maxId + "</Arvo>" +
        "      </LEQ>" +
        "    </Ja>";

      Jos (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Sisältää>" +
          "      <FieldRef nimi =  "Title" />" +
          "      <Arvon tyyppi =  "Teksti, hiiren avulla">" + titleFilter + "</Arvo>" +
          "    </Sisältää>" +
          "  </Ja>";
      oQuery.Query  =
        "</Jos>";

Kehityksen alkuvaiheessa, nyt kuluva työntekijä erinomainen. Kuitenkin, kansiot tuodaan directory liittyvien ongelmien ja yhtäkkiä, BDC-valitsin ei ole tuloksia. Olen seurannut siitä, SPQuery ei koskaan palaa tuloksia. Käytimme kansiot ensisijaisesti mahdollistaa useita tiedostoja ladataan sama nimi mutta eri metatiedot. Kun tiedosto ladataan, Luo kansio luettelokohteen tunnuksen perusteella ja sitten siirtää tiedoston siellä (Kirjoitin siitä, että Täällä; Meillä on ollut vaihtelevia tuloksia tätä lähestymistapaa, mutta kaikki, se toimii hyvin). Käyttäjän välitä tietoja kansioista ja itse asiassa, eivät todellakaan ymmärrä, että on olemassa jokin kansio. Meillä on määritetty Kirjasto näyttää kohteet kansioiden riippumatta näkemyksiä.

Osuin kahdesti tekninen toteutus kehittynyt ja ratkaista se eri tavalla aina, kun ongelma. Ensimmäistä kertaa, Ei käytä sisältää-operaattoria kyselyssä. Ilman sisältää-operaattoria, Minulla oli mahdollisuus ratkaista ongelman määrittämällä sitä mieltä SPQuery contructor. Sen sijaan, että oletus rakentaja:

SPList oList = web.Luettelot["Asiakirjat"];

SPQuery oQuery = Uusi SPQuery();

Sen sijaan käytetään konstruktoria, joka määrittää näkymän:

SPList oList = web.Luettelot["Asiakirjat"];

SPQuery oQuery = Uusi SPQuery(oList.Views["Kaikki asiakirjat"]);

Se ratkaisi ongelman ja aloin saan tuloksia.

Sitten lisäsin sisältää-operaattoria taikinaan ja se rikkoi jälleen. Osoittautuu, että CONTAINS-operaattorin, sikäli kuin voin kertoa, ei toimi mieltä samoin kuin yksinkertaisempi GEQ / LEQ toimijoiden. Valmis jokin tutkiva ja oppinut, että kyselyn ViewAttributes tarkoitus "Rekursiivinen", kuten:

oQuery.ViewAttributes = "Soveltamisala = "Recursive"";

Se ratkaisi ongelman sisältää. Itse asiassa, Tämä ratkaista minun alkuperäinen Etsi arvoitus ja oli määritelty täytäntöönpanoa kuiluun johtuvan ensimmäistä kertaa, En ole Suorita tarkastelemaan uudelleen.

Se, että näkymään perustuvaa SPQuery toimii joillekin toimijoille (GEQ/LEQ) eikä muita (SISÄLTÄÄ), yhdistettynä siihen, että KPI: T eivät näytä toimivan lainkaan kanssa kansion sisältävä asiakirja kirjastot johtaa minut uskomaan, että SPQuery on joitakin orthogonality asioita.

Erityiset kiitokset:

  • Hyvä folks at U2U ja kyselyn avulla.
  • Michael Hoffer suuri "tekemällä oppimista" Blogikirjoituksen, kommentteja ja vastauksia.

</loppu>

Tilaa blogiin!

MOSS KPI bug? Sidottu asiakirjakirjaston kansioiden luettelon ilmaisin

PÄIVITYS 02/29/08: Olen ratkaissut ongelman luomalla kansion ja sisältölajiin liittäminen kansioon, joka on tarvitsen KPI metatiedot. Kuvasin että hieman tarkemmin täällä.

Käytössämme on tekninen ratkaisu, jossa käyttäjät ladata asiakirjoja asiakirjakirjastoon. Tapahtuma-vastaanotin luo kansion ja siirtää tiedoston hakemistoon (käyttämällä tekniikka muistuttaa mitä kirjoitin Täällä). Meidän voittajina ympäri aiheuttama tapahtuma-vastaanottimet, että nimeä lataamasi tiedostot pulmia (pääasiassa siksi, että käyttäjät koskaan Aloita asiakirjan klikkaamalla "uusi" mutta sen sijaan luoda docs paikallisesti ja sitten lähettää ne).

Näiden asiakirjojen metatiedot sisältää kyllä/ei sivustosarake nimeltä "kiireellinen" ja toinen sivustosarake nimeltään "Tila". Meidän täytyy täyttää liiketoiminnan edellytys, joka osoittaa prosentteina "kiireellinen" asiakirjat, joiden tila on "Odottaa".

Tämä on yleensä helppo tehdä ja kuvasin jotain tämän SharePoint-Beagle on paljon kuvakaappauksia, jos olet kiinnostunut.

Pähkinänkuoressa, Tein seuraavat:

  • Luo näkymä doc kirjasto nimeltään "Odottaa".
  • Määritä näkymä ohittamaan kansiorakenne.
  • KPI-luettelon luominen.
  • Luo ilmaisin luetteloon, joka viittaa doc lib ja että "odottaa" näkymä.

Tämä ei yksinkertaisesti toimi. KPI näyttää minun tavoite (virrankatkaisu. viisi kiireellisiä asiakirjoja) mutta näyttää aina todellinen määrä kiireellisiä asiakirjoja nolla. Paradoksaalisesti, Jos poraa alas yksityiskohtia, se näkyy viisi kiireellisiä asiakirjoja. Olen luonut yksinkertaisen skenaario kaksi asiakirjaa, yksi kansio ja yksi ei. Tässä on kuvakaappaus:

kuva

Edellä kuvakaappaus osoittaa, on olemassa kaksi näkymää, mutta arvo"" on yksi. "-CamlSchema" tyhjän asiakirjan tunnus on pääkansioon ja toinen on kansio nimeltä "84".

Siltä tuntuu, että vaikka voit määrittää näkymän, KPI ei kunnia, "Näytä kaikki kohteet ilman kansioita" asettaminen ja sen sijaan, rajoittuu pääkansioon.

Jos olen väärässä, drop minulle rivi tai jätä kommentti.

</loppu>

Tilaa blogiin!

Technorati Tags:

Ratkaisu ongelmaan: “FileNotFoundException” Ominaisuus-vastaanotin.

Olin työskennellyt ominaisuus viime viikolla, joka lisää tapahtuman vastaanottajat tietyn luettelon esiintymä. (Olen blogged hieman siitä että luettelon vastaanotin).

Komentorivin avulla, Voi asentaa ominaisuuden ilman virheitä (mutta alla piilevä virhe). Kun yritin asentaa sivuston ominaisuus, MOSS valitti "FileNotFoundException" Virhe. Tämän blogimerkinnän kuvataan, miten ratkaista se.

Tämä on virhe, että MOSS näytti web-selaimessa:

Ominaisuus "b2cb42e3 4f0a 4380 Pekka 1ef9cd526f20’ ei voi asentaa, koska Tapahtumavastaanottimen kokoonpanon "xyzzyFeatureReceiver_0 lastaus" epäonnistui: System.IO.FileNotFoundException: Ei voi ladata tiedostoa tai kokoonpanoa "xyzzyFeatureReceiver_0’ tai jotakin sen riippuvuutta. Järjestelmä ei löydä määritettyä tiedostoa.
Tiedostonimi: "xyzzyFeatureReceiver_0’
klo System.Reflection.Assembly.nLoad(AssemblyName tiedostonimi, Merkkijono codeBase, Näyttö assemblySecurity, Kokoonpanon locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
klo System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Näyttö assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
klo System.Reflection.Assembly.InternalLoad(Merkkijono assemblyString, Näyttö assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
klo System.Reflection.Assembly.Load(Merkkijono assemblyString)
klo Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
VAROITUS: Kokoonpanon sidonnan kirjaus on kytketty pois päältä.
Jotta kokoonpanon sidontavirheiden kirjaaminen, määritettävä rekisteriarvo [HKLMSoftwareMicrosoftFusion]!EnableLog] (DWORD) - 1.
Huomautus: On joitakin suorituskyvyn rangaistus liittyvät kokoonpanon sidontavirheiden kirjaaminen.
Voit poistaa tämän toiminnon käytöstä, Poista rekisteriarvo [HKLMSoftwareMicrosoftFusion]!EnableLog].

Vianmääritys Windows SharePoint Services.

Osaa tietoisesti aiheuttaa tämän virheen: Älä asenna kokoonpano GAC-säilössä. Mutta, se oli GAC-säilössä. Olen yleensä asennetaan kokoonpanot GAC vetämällä niitä c:\windowsassembly kansio Resurssienhallinnassa. En ole koskaan tuntenut 100% mukava tehdä, että koska olen aina ajatellut, että gacutil on olemassa syy … niin olen yrittänyt sitä. Se ei ollut eroa.

Olen etsinyt Internets ja perustaa nyt kuluva asettaa: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Juliste on tapahtunut käyttämään samaa juuri vähän koodia (Sisällä WSS kirja tästä luettelosta) joten se oli lupaava merkki. Kuitenkin, koristelu kokoonpano, jonka ehdotus [kokoonpano: ] direktiivissä ei ole mitään järkeä minulle. Yritin kuitenkin ja olin oikeassa. Se ei ollut eroa.

Sitten huomasin, että minun Luokkamääritystä ei julkinen. Tein sen julkisesti ja että ei ollut eroa.

Seuraava, Menin vaivaa mahdollistaa "kokoonpano sitoa epäonnistuminen log" (hyvä ja tarkka ohjeiden mukaisesti) ja tämä on kun asiat alkoivat saada mielenkiintoisia. Että loki näyttää minulle runtime tutkiva kaikkialla minun kokoonpanon palvelimella. Se jopa näyttää hakee se minun Lääkekaappi. Mutta … se ei etsi se GAC.

Laittaa minun talvitakki ja mennä hakee Internets uudelleen ja löytää, että joku on ollut tämä ongelma liian. Pitkät keskustelut että lähettämistä on peters pois mitään ja en löydä ratkaisua.

I siirtyä yksi niistä paikoista, loki väittää, se etsii ja hieman edistyä minun kokoonpano. Olen palkitaan uusi virhe selaimessa, kun yritän aktivoida erikoisartikkeli:

Objektia ei voitu luoda ominaisuus vastaanotin kokoonpano "xyzzyFeatureReceiver_0", Kirjoita "Conchango.xyzzyFeatureReceiver" ominaisuus b2cb42e3-4f0a-4380-aaba-1ef9cd526f20 varten: System.ArgumentNullException: Arvo ei voi olla null.
Parametrin nimi: tyyppi
klo System.Activator.CreateInstance(Tyyppi tyyppi, Boolen julkistamatonta tärkeää tietoa)
klo System.Activator.CreateInstance(Tyyppi tyyppi)
klo Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Vianmääritys Windows SharePoint Services.

Yksi viimeinen matka Internets aika!

Tällä kertaa saan selville, kuten saattaa odottaa, MOSS antaa tämän virheen, koska kokoonpanoa ei löydy yleisestä Kokoonpanovälimuistista.

Haluan jotain positiivista tästä ja yrittää olla hieman ylpeä, että olen luonut Karannut MSIL kokoonpanot, mutta se ei toimi. Olen pelkkää vihainen. Huomaan mutisten "muna vai kana" Under my hengenvetoon.

Olen vihdoin päättää punt. Voin luoda kokonaan uusi hanke ja kopioi/liitä koodi incredible-cloaked-from-the-GAC-assembly työelämän hankkeen aikana uuden hankkeen. (Odotan rakentaa lipun nimeltään jotain "Piilota kokoonpanon sidonnan GAC asennettu" mutta voi löytää).

Asentaa ja aktivoida se ja … se toimii! Niin, Loppujen lopuksi, että, Jouduin periaatteessa "uudestisyntynyt’ minun hanke. Tämä on toinen syy, miksi vihaan tietokoneita.

Minä opin jotain hyötyä tästä. Olisi asentanut ominaisuuksia komentoriviltä stsadm koko päivän ja kohteleva "-pakottaa" vaihtoehto tavan. Jostain syystä, En käytä-force vaihtoehtoa, kun olen asentanut uuden projektin. Tällä kertaa, Tein todella, todella unohtaa kopioida tämän uuden projektin kokoonpano GAC. Tämän seurauksena, Sain "FielNotFoundException" Virhe. Tällä kertaa, Sain sen stsadm, ei kun yritin ottaa ominaisuuden web-selaimella. Niin, -Force itse kahdessa roolissa. Sen avulla voit asentaa uudelleen olemassa ominaisuus. Voit myös asentaa buginen ominaisuus, joka voi toimia suorituksen tukahduttamalla virhe. Se luultavasti sanoo niin paljon ohjeen jossain mutta en ole koskaan huomannut.

</loppu>

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();
        }

Vihje: Sisältökysely-Web-osan, Haun sarakkeen arvo ja XSL

Sarakkeen nimi on sisältölaji nimeltään "Real Estate sijainti".

Sarake toimii "haku"-tyyppinen.

On muokattu <CommonViewFields> ja ItemStyle.xsl-sarakkeen näyttäminen.

Yksinkertainen <XSL:arvo, valitse =…> palauttaa takaisin sisäisen arvon, joka sisältää paikan tiedot, kuten:

1;#Miami

Ihmisen-ystävällinen-arvo, käyttää xsl alimerkkijono jälkeen, kuten:

<XSL:( @Real_x005F_x0020_Estate_x005F_x0020_Location, '#') ">< / xsl:arvo >(@Real_x005F_x0020_Estate_x005F_x0020_Location,’#’)"></XSL:arvo>

Käyttää tätä tapaa, kun hakuarvot XSL-muuntoja käsitteleminen ja tarve saada ihmisten-ystävällinen-arvo.

<Lopeta />

Technorati Tags: , ,

Nopea ja helppo: Määrittää sivustosarakkeen sisäinen sarakenimi

PÄIVITYS: Jeremy Thake on blogged tästä ja esittää joitakin console application-koodi Tämä osoittaa, että sisäiset nimet.

Yritin saada sisältökysely-web-osa näyttää eräpäivä tehtävästä ja koska näytön otsikko on "Eräpäivä", Oletin, että sarakkeen nimen käyttäminen <CommonViewFields> on "Due_x0020_Date".

Väärä!

Todellinen sarakenimi koski "Parasta".

Miten löydän sen? Luin uudelleen Heather Salomonin blogimerkinnän muokkaaminen CQWP näyttää ylimääräisiä tietosarakkeita. Hän kuvaa tätä prosessia askel #13. Luota siihen. Se on oikein. Ainakin, se oli oikein, kun. En luottanut se ensin toisen sarakkeen pidempi nimi.

Sanon "luota siihen" koska ei luota se ja todennäköisesti hukkaan lähellä kaksi tuntia butting pääni seinää vasten. Kun päätin "parasta" Nimi, Halusin lisätä toiseen kenttään ja <CommonViewFields>. Salomon-tekniikalla, Olin saada sarakkeen nimi, kuten "XYZ_x0020_Project_x0020_Due_x00".

Ajattelin itsekseni, Tämä on selvästi lyhennetty nimi. Menin eteenpäin ja YK: n katkaistu se ilman menestystä. Lopuksi käyttää näennäisesti lyhennetty nimi ja se toimi.

Bonus vinkki: Kun olin töissä CQWP, Jos olen lisännyt huono sisäinen nimi <CommonViewFields>, CQWP kertoisi minulle, että kysely oli ei palauta tuloksia. Mutta, Jos tietotyyppi on lisättävä kenttänimi, se palaisi seurauksena. Lisäämällä tietojen tyyppi todella naamioitu ongelma koska oli viitetietoina olematonta kenttä. Voisin lisätä, mutta kun yritin näyttää arvonsa, Olen aina tyhjä.

Tämä peitä virhe:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

Tämä peittää virhe:

<CommonViewFields>Due_x0020_Date,Päivämäärä ja aika;</CommonViewfields>

</loppu>