Kategori Arkiv: SharePoint udvikling

Enkel forklaring: “Værdi falder ikke inden for det forventede interval.”

OPDATERING: En anonym plakat efterlod en stor kommentar om interne navne. Sørg for at læse det.

Når du arbejder med Hændelsesmodtagere og anden kode, som refererer til SharePoint-listeelementer via objektmodellen, Jeg laver ofte fejltagelser, der genererer denne fejl på kørselstidspunktet:

Fejl lastning og kører hændelse receiver Conchango.xyzzyEventReceiver i xyzzy, Version = 1.0.0.0, Kultur = neutral, PublicKeyToken = 0dc50a750396c3ac. Yderligere oplysninger finder du under. : Værdi falder ikke inden for det forventede interval.

Jeg tror, dette er en forholdsvis generisk fejl, der er potentielt forårsaget mange forskellige måder. Dog, en simpel forklaring er, at jeg ser referencing et felt forkert. Hvis navnet på feltet er "Forfaldsdato", Jeg skal henvise til den som denne i en begivenhed receiver:

egenskaber.ListItem["Forfaldsdato"]

Når jeg staver forkert eller bruge den forkerte sag, når der refereres til feltet, SharePoint genererer den ovenfor nævnte runtime fejl. For eksempel, Dette er forkert:

egenskaber.ListItem["forfaldsdato"]

</slutningen>

Abonner på min blog.

Technorati Tags:

Hurtig & Let: Opret en mappe og tildele en indholdstype (Eller, Har din KPI'er og spise dem også)

For at løse et KPI-problem Jeg skrev om her, Jeg gjorde nogle test og opdagede at KPI arbejde mod mapper med metadata på samme måde, at de arbejder mod dokumenter eller listeelementer. Jeg viste det ud ved at oprette en ny indholdstype baseret på content mappetype og derefter tilføjet et par felter. Jeg lavet nogle indikatorer og viste sig til mig selv, at KPI'er arbejde som forventet. Dette var velkommen nyheder. Det er ikke perfekt, fordi drill-down får du fra er KPI mod mapperne ikke præcis hvad du vil. Dette er ikke for meget en ulempe i mit tilfælde, fordi 1) slutbrugere, der ikke kender nogen bedre og 2) drill-down går til en mappe. De klikker på mappenavnet, og de er på varen. Det er to klik i stedet for en, der er ikke slutningen af verden.

Det flød pænt med det arbejde jeg lavede. Jeg opretter en mappe til hvert dokument, der bliver uploadet. Dette gøres via en begivenhed modtager. Som et resultat, Det er en smal til at holde den overordnet mappes metadata i sync med KPI-drevet metadata fra selve filen da VVS er allerede på plads. Dette giver mig mulighed for at have mine KPI'er og også spise dem 🙂

Jeg ændrede begivenhed-modtager for at tilføje mappen og derefter angive denne nye mappe indholdstype til min brugerdefineret KPI-venlige indholdstype. Denne bit af kode gjorde tricket:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Dokumenter").Undermapper;
  SPFolder addedFolder = srcFolders.Add(egenskaber.ListItem.ID.ToString());
  SPContentTypeId kpiCT = nye SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Content-Type ID"] = kpiCT;
  addedFolder.Item.Update();

Til at finde det faktiske indholdstype-ID, Jeg adgang til denne indholdstype via indstillinger for websted og kopi/indsat det fra URL-adressen som vist:

billede

</slutningen>

Abonner på min blog!

Technorati Tags: ,

Hurtig og nem: Få SPFolder af en SPListItem i en begivenhed Receiver

Jeg hader at indrømme det., men jeg kæmpede med denne ene alle dag. Min begivenhed modtageren skal opdatere et felt i den overordnede mappe. Dette lidt viser hvordan man gør det:

privat void UpdateParentFolder(SPItemEventProperties egenskaber)
{

SPFolder thisItemFolder = egenskaber.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ godkendelsesstatus"] = "Gode nyheder, alle!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

I dette tilfælde, Jeg arbejder med et dokumentbibliotek og egenskaber kommer fra en ItemAdded begivenhed.

Tricket er at du ikke kan få SPFolder af varen direkte fra selve emnet (dvs. egenskaber.ListItem.Folder er null). I stedet, gå til listeelementets tilknyttede fil og få den filmappe.

</slutningen>

Abonner på min blog!

Technorati Tags:

Endnu en anden begivenhed modtager Debug Trick

Jeg er sikker på, jeg ikke er den første person til at komme med denne. Dog, Jeg har ikke bemærket nogen udgiver et trick som det siden jeg startede med større opmærksomhed til Fællesskabet i juli. Så, Jeg tænkte jeg ville sende det denne hurtig og nem debug tip.

Jeg arbejder på en event-modtager, der begyndte at generere denne fejl i den 12 hive:

Fejl lastning og kører hændelse receiver Conchango.xyzzyEventReceiver i xyzzy, Version = 1.0.0.0, Kultur = neutral, PublicKeyToken = blahbalhbalh. Yderligere oplysninger finder du under. : Objektreferencen er ikke indstillet til en forekomst af et objekt.

Jeg vidste ikke hvor jeg havde introduceret denne fejl, fordi jeg havde gjort alt for mange ting i en af min kode/installere/test cykler.

Jeg har prøvet Denne løsning at få min FBF derinde med håb at SharePoint 12 hive ville vise staksporingen, men uden held. Jeg ved ikke, hvis det er muligt, og hvis nogen ikke, Lad mig vide 🙂

Jeg ved, at det er muligt at skrive din egen log beskeder til den 12 hive. Helt ærligt, Jeg ønskede noget lidt mindre skræmmende og hurtigere at gennemføre.

Den forekom mig, at jeg i det mindste kunne få nogle grundlæggende sporingsoplysninger ved fangst og re-throwing generic undtagelser som denne:

  Prøv {
    UpdateEditionDate(egenskaber);
  }
  fangst (Undtagelse e)
  {
    kaste nye Undtagelse("Dispatcher, UpdateEditionDate(): Undtagelse: [" + e.ToString() + "].");
  }

Dette viste i den 12 hive thusly:

Fejl lastning og kører hændelse receiver Conchango.xyzzyEventReceiver i xyzzy, Version = 1.0.0.0, Kultur = neutral, PublicKeyToken = blahblahblah. Yderligere oplysninger finder du under. : Senderen, UpdateEditionDate(): Undtagelse: [System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt. på Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties egenskaber) på Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties egenskaber, Streng eventDescription)].

Der gav mig alle detaljer I needed at opspore dette problem, og jeg forventer at bruge det et parti går fremad.

</slutningen>

Abonner på min blog!

Løsning: SPQuery søger ikke mapper

Denne sidste uge jeg gennemførelsen af en "udvikler" løsning til en klient, der bruger BDC- og SPQuery og løb ind i nogle problemer med at bruge SPQuery mod et dokumentbibliotek, der indeholder mapper. Bundlinjen: tildele "rekursive" til attributten visning af forespørgslen.

Min scenario:

  • På mandag, Jeg uploade et dokument og levere nogle metadata.
  • Den følgende uge, Jeg uploade et nyt dokument. Meget af dette nye dokument metadata er baseret på det dokument, jeg har uploadet på mandag (som vi kalder "hoveddokumentet").
  • Vi har lavet en web service facade, der giver en BDC-venlige interface til listen, så brugerne nemt kan finde mandag dokumentet via en titelsøgning.
  • En BDC-datakolonne giver en brugervenlig grænseflade. (Dette er en del af mit forsøg på at bruge BDC til en mere venlig opslagskolonne).

Den endelige BDC-facade service bruger en forespørgsel som dette for at gøre opslag:

 // Brugt U2U værktøj til at hjælpe med at skabe denne CAML forespørgsel.
      oQuery.Query =
        "<Hvor>";

      Hvis (titleFilter.Length > 0)
        oQuery.Query  =
          "  <Og>";

      oQuery.Query  =
        "    <Og>" +
        "      <Geq>" +
        "        <FieldRef navn =  "DocumentId" />" +
        "        <Værditype =  "Text">" + minId + "</Værdi>" +
        "      </Geq>" +
        "      <LEQ>" +
        "        <FieldRef navn =  "DocumentId" />" +
        "        <Værditype =  "Text">" + maxId + "</Værdi>" +
        "      </LEQ>" +
        "    </Og>";

      Hvis (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Indeholder>" +
          "      <FieldRef navn =  "Title" />" +
          "      <Værditype =  "Text">" + titleFilter + "</Værdi>" +
          "    </Indeholder>" +
          "  </Og>";
      oQuery.Query  =
        "</Hvor>";

Under den indledende fase af udvikling, Indeværende arbejdede stor. Dog, vi indført mapper i mappen til at løse nogle problemer og pludselig, min BDC-picker ville ikke returnerer nogen resultater. Jeg sporede det ned til det faktum, at SPQuery aldrig ville vende tilbage nogen resultater. Vi brugte mapper primært for at tillade flere filer med samme navn til at blive uploadet, men med forskellige metadata. Når filen er uploadet, vi oprette en mappe baseret på listeelementets ID og derefter flytte fil, der (Jeg skrev om, at Her; Vi har haft blandede resultater med denne tilgang, men på hele, det fungerer godt). Brugeren er ligeglad om mapper og faktisk, ikke rigtig forstå at der er nogen mapper. Vi har konfigureret alle visninger på biblioteket for at få vist elementer mapper.

Jeg ramte problemet dobbelt så den tekniske gennemførelse udviklet sig og løst det forskelligt hver gang. Første gang, Jeg var ikke bruge operatoren indeholder i forespørgslen. Uden en indeholder operatør, Jeg var i stand til at løse problemet ved at angive visningen på den SPQuery pause. Istedet for benytter standardkonstruktøren:

SPList.Update() oList = web.Lister["Dokumenter"];

SPQuery oQuery = nye SPQuery();

I stedet brugte jeg en konstruktør, der er angivet en visning:

SPList.Update() oList = web.Lister["Dokumenter"];

SPQuery oQuery = nye SPQuery(oList.Views["Alle dokumenter"]);

At løst problemet og jeg begyndte at få mine resultater.

Jeg tilføjede derefter operatoren indeholder i mikset, og det brød igen. Det viser sig, at operatoren indeholder, så vidt jeg kan fortælle, virker ikke med visningen på samme måde som i en enklere GEQ / LEQ operatører. Jeg gjorde nogle søger og lært at forespørgslens ViewAttributes skal angives til "Rekursiv", som i:

oQuery.ViewAttributes = "Omfang = "Recursive"";

Det løste problemet for indeholder. Faktisk, dette også løst mit oprindelige søgning problem og hvis jeg havde angivet rekursivt attributten første gang, Jeg ikke ville have køre ind på spørgsmålet igen.

Det faktum, at en visningsbaseret SPQuery virker for nogle operatører (GEQ/LEQ) og ikke andre (INDEHOLDER), kombineret med det faktum, at KPI'er ikke synes at arbejde på alle med mappe, der indeholder dokumentet biblioteker fører mig til at tro, at SPQuery har nogle orthogonality spørgsmål.

Særlig tak:

  • De gode folk på U2U og deres forespørgselsværktøj.
  • Michael Hoffer store "læring ved at gøre" blog-indlæg, kommentarer og svar.

</slutningen>

Abonner på min blog!

MOSS KPI-bug? Listen indikator bundet til dokumentbiblioteket med mapper

OPDATERING 02/29/08: Jeg løste dette problem ved at oprette en mappe og derefter tildele en indholdstype til den mappe, som har metadata jeg har brug for KPI'erne. Jeg beskrev det lidt nærmere her.

Vi har gennemført en teknisk løsning, hvor brugerne uploade dokumenter i et dokumentbibliotek. En event modtager en mappe og flytter filen til denne mappe (ved hjælp af en teknik svarende til, hvad jeg skrev om Her). Vi har med held navigerede rundt de potentielle problemer forårsaget af hændelsesmodtagere, at omdøber uploadede filer (primært fordi brugerne aldrig starte deres dokument ved at klikke på "New" men i stedet skabe docs lokalt og derefter uploade dem).

Meta-data for disse dokumenter indeholder en Ja/ingen webstedskolonne kaldet "haster" og en anden webstedskolonne kaldet "Status". Vi har brug at møde en virksomhed krav, der viser procentdelen af "haster" dokumenter, hvis status er "Ventende".

Dette er normalt nemt at gøre og beskrev jeg noget meget lignende på SharePoint Beagle med masser af billeder af skærmen hvis du er interesseret.

I en nøddeskal, Jeg gjorde følgende:

  • Oprette en visning på doc bibliotek kaldet "Afventer".
  • Konfigurere visningen for at ignorere mappestruktur.
  • Oprette en KPI-liste.
  • Opret en indikator på listen, der peger på doc lib og der "afventer" Se.

Dette blot virker ikke. Nøgletallet viser mit mål (strømsparetilstand. fem hastende dokumenter) men altid viser det faktiske antal hastende dokumenter som nul. Paradoksalt nok, Hvis du bore ned detaljer, Det viser de fem hastende dokumenter på listen. Jeg skabt en meget enkel scenario med to dokumenter, en i en mappe og en ikke. Her er skærmbillede:

billede

Ovenstående skærmbillede viser tydeligt er der to dokumenter i visningen, men værdien"" er en. "CamlSchema" med tomt dokument-Id er i rodmappen og den anden er i en mappe med navnet "84".

Det forekommer mig, at selvom du angiver en visning, KPI'EN ære ikke den "Vis alle elementer uden mapper" indstilling og i stedet, begrænser sig til rodmappen.

Hvis jeg er forkert, venligst drop mig en linje eller efterlade en kommentar.

</slutningen>

Abonner på min blog!

Technorati Tags:

Løsning på problemet: “FileNotFoundException” Med min funktion modtager.

Jeg arbejdede på en funktion i sidste uge, som vil tilføje nogle hændelsesmodtagere til en bestemt liste forekomst. (Jeg blogges lidt om at listen modtager her).

Ved hjælp af kommandolinjen, Jeg kunne installere funktionen med ingen fejl (Men se nedenfor for de skjulte fejl). Da jeg prøvede at installere funktionen på webstedet, MOSS klagede over en "FileNotFoundException" fejl. Dette blogindlæg beskriver, hvordan jeg løst det.

Indeværende er den fejl, at MOSS viste mig i webbrowseren:

Funktionen ' b2cb42e3-4f0a-4380-Hanss-1ef9cd526f20’ kunne ikke installeres, fordi indlæsning af begivenhed receiver forsamling "xyzzyFeatureReceiver_0" mislykkedes: System.IO.FileNotFoundException: Kunne ikke indlæse filen eller assemblyen ' xyzzyFeatureReceiver_0’ eller en af dens afhængigheder. Systemet kan ikke finde den angivne fil.
Filnavn: ' xyzzyFeatureReceiver_0’
på System.Reflection.Assembly.nLoad(AssemblyName filnavn, Streng codeBase, Beviser assemblySecurity, Assemblyen locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
på System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Beviser assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
på System.Reflection.Assembly.InternalLoad(Strengen assemblyString, Beviser assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
på System.Reflection.Assembly.Load(Strengen assemblyString)
på Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Forsamling bindende logføring er slået fra.
Du aktiverer forsamling binder fiasko logføring, indstille registreringsdatabaseværdien [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) til 1.
Bemærk: Der er nogle ydeevne sanktion tilknyttet forsamling binder fiasko logføring.
Slå denne funktion fra, ophæve den indskrive værdi [HKLMSoftwareMicrosoftFusion!EnableLog].

Fejlfinding af problemer med Windows SharePoint Services.

Jeg ved, hvordan man bevidst forårsage denne fejl: ikke installere assemblyen i GAC. Men, Det var i GAC. Jeg installere normalt forsamlinger i GAC ved at trække dem til c:\windowsassembly mappe ved hjælp af windows Stifinder. Jeg har aldrig følt 100% komfortable gør, fordi jeg altid troet, at gacutil eksisteret en grund … så jeg prøvede at. Det gjorde ingen forskel.

Jeg søgte Internets og fandt dette indlæg: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Plakaten tilfældigvis skal bruge den samme rod bit kode (fra bogens inde WSS fra denne liste) så det var et lovende tegn. Dog, forslaget om udsmykning forsamling med et [forsamling: ] direktiv giver ikke mening for mig. Jeg prøvede det alligevel og jeg havde ret. Det gjorde ingen forskel.

Så jeg bemærket, at min klassedefinitionen ikke var offentlige. Jeg gjorde det offentlige og det gjorde ingen forskel.

Næste, Jeg gik til besværet med at aktivere "forsamling binder fejl log" (på grundlag af nyttige og præcise instruktioner) og dette er, hvor ting begyndte at blive interessant. Denne log viser mig, at runtime søger overalt på den pågældende server til min samling. Det synes selv at være at søge efter det i mit medicinskabet. Men … det vil ikke søge efter det i GAC.

Jeg sætter på min vinterjakke og gå søger Internets igen og finde, at nogen har haft dette problem også. Den langvarige diskussion i denne udstationering peters off i noget og jeg kan ikke finde en løsning.

Jeg flytter min samling til et af de steder log hævder det søger og jeg komme lidt videre. Jeg er belønnet med en ny fejl i browseren, når jeg forsøger at aktivere funktionen:

Det mislykkedes at oprette funktion modtager objektet fra forsamlingen "xyzzyFeatureReceiver_0", Skriv "Conchango.xyzzyFeatureReceiver" for funktionen b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Værdi må ikke være null.
Parameternavnet: type
på System.Activator.CreateInstance(Type type, Boolean nonPublic)
på System.Activator.CreateInstance(Type type)
på Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Fejlfinding af problemer med Windows SharePoint Services.

Tid til en sidste tur til Internets!

Denne gang jeg finde ud af, forudsigeligt nok, at MOSS spørgsmål denne fejl, fordi assemblyen ikke er i GAC.

Jeg ønsker at få noget positivt ud af det og forsøge at være lidt stolt, at jeg har lavet den Diffus MSIL forsamlinger, men det er ikke i orden. Jeg er bare plain irriteret. Jeg befinder mig mumler "hønen eller ægget" under min ånde.

Jeg endelig beslutter at punt. Jeg oprette et helt nyt projekt og copy/paste koden fra incredible-cloaked-from-the-GAC-assembly ikke-arbejdende projektet over dette nye projekt. (Jeg søger en bygge flag kaldes noget som "Skjul fra assemblyen bindende, hvis installeret i GAC" men kan ikke finde en).

Jeg installere funktionen og aktivere den og … det virker! Så, efter alle, Jeg måtte dybest set ' genstarte’ mit projekt. Dette er en anden grund til hvorfor jeg hader computere.

Jeg har lære noget nyttigt fra dette. Jeg havde installation af funktioner ved hjælp af kommandolinjen stsadm hele dagen lang og brugt den "-kraft" indstilling ud af vane. For anden grund, Jeg ikke bruger - kraft valgmulighed da jeg installerede det nye projekt. Denne gang, Jeg gjorde faktisk, virkelig Glem at kopiere dette nye projekt assembly til GAC. Som et resultat, Jeg fik denne "FielNotFoundException" fejl. Denne gang, Jeg fik det fra stsadm, ikke, når jeg prøvede at aktivere funktionen via en webbrowser. Så, -kraft faktisk spiller to roller. Gør det muligt at re-installere en eksisterende funktion. Det giver også mulighed for at installere en buggy funktion, der ikke kan arbejde på kørselstidspunktet ved at undertrykke fejlen. Det siger nok så meget i hjælp til et eller andet sted, men jeg lagt mærke aldrig til det.

</slutningen>

Hurtig & Let: Omdøbe overførte fil ved hjælp af SharePoint-objektmodellen Via en hændelse Receiver

OPDATERING: Dette virker, men der er væsentlige begrænsninger, der er beskrevet i kommentarerne. Dette kan stadig være nyttigt i nogle omstaendighederne.

OPDATERING 2: I min aktuelle projekt, brugerne overføre altid dokumenter. Som et resultat, Jeg løbe ikke ind i et problem, hvor MS Word kører og mener, at filen blev omdøbt på det. Jeg løbe ind i et problem, "filen blev ændret af en anden" og løst dette via en simpel semaphore type flag. Brugernes savn hen til ændre en meta datafelt fra standardværdien til noget andet. Af itemupdated() modtageren ser til en gyldig værdi der før du faktisk udfører omdøbe og siden da, Jeg har ikke haft nogen problemer. Din kilometertal kan variere.

Jeg har en klient kravet om at ændre navnet på filer uploades til et bestemt dokumentbibliotek i overensstemmelse med en bestemt navngivningskonvention. API indeholder ikke et "Omdøb()" metode. I stedet, Vi bruger "MoveTo(…)". Her er en minimal smule kode til at opnå dette:

 offentlige tilsidesætte void ItemAdded(SPItemEventProperties egenskaber)
        {
            SPFile f = egenskaber.ListItem.File;

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

        }

Den kun tricky bit er "egenskaber. ListItem.ParentList.RootFolder.Url". MoveTo() metoden kræver en URL. Der mosede op streng point mig til rodmappen på mit aktuelle dokumentbibliotek. Dette tillader mig at undgå hårde kodning i min begivenhed modtager.

Dette er en mere nyttige version, der gør de samme ting, men tildeler navnet på filen til "Titel":

 offentlige tilsidesætte void ItemAdded(SPItemEventProperties egenskaber)
        {
            DisableEventFiring();

            // Tildele titlen på denne post til navnet på selve filen.
 // NOTE: Denne opgave skal finde sted, før vi ændrer selve filen.
 // Kræver opdatering() på SPFile synes at afkræfte egenskaber i
 // nogle følelse.  Opdateringer til "titel" mislykkedes indtil der ændrer (og opdatering() opkald)
 // blev flyttet foran ændringen til filnavnet.
            egenskaber.ListItem["Titel"] = egenskaber.ListItem.File.Name;

            egenskaber.ListItem.Update();

            SPFile f = egenskaber.ListItem.File;

            // Få en udvidelse af fil.  Vi har brug for det senere.
 streng spfileExt = nye FileInfo(f.Name).Udvidelse;

            // Omdøb filen til listeelementets ID og bruge fil forlængelsen at holde
 // del af det intakt.
            f.MoveTo(egenskaber.ListItem.ParentList.RootFolder.Url +
                "/" + egenskaber.ListItem["ID"] + spfileExt);

            // Begå farten.
            f.Update();

            EnableEventFiring();
        }

Hurtige Tip: Webdelen til indholdsforespørgsel, Opslag kolonneværdi og XSL

Jeg har et kolonnenavn i en indholdstype med navnet "Real Estate placering".

Denne kolonne er af typen "opslag".

Jeg har ændret <CommonViewFields> og ItemStyle.xsl til at vise kolonnen.

En enkel <XSL:værdi af Vælg =…> Returnerer tilbage en indre værdi, der indeholder data, ordinale position, Sådan som:

1;#Miami

Menneskelige-venlige værdien skal hentes, bruge xsl understreng-efter, som vist:

<XSL:valuXSLf Vælg = "understreng-efter(@ Real_x005F_x0020_Estate_x005F_x0020_Location,’#’)"></XSL:værdi af>

Bruge denne teknik, når du arbejder med opslagsværdier i XSL-transformationer og skal få den menneskelige-venlige værdi.

<afslutning />

Technorati Tags: , ,

Hurtig og nem: Bestemme indre kolonnenavnet på en webstedskolonne

OPDATERING: Jeremy Thake har blogges om dette og sætte nogle kode for et konsolprogram der viser interne navne.

Jeg forsøgte at få en indholdsforespørgsel webdelen skal vise en forfaldsdato fra en opgave, og fordi skærmen etiketten "Forfaldsdato", Jeg overtog som kolonnenavn til brug i <CommonViewFields> er "Due_x0020_Date".

Forkert!

Den virkelige kolonnenavn var i dette tilfælde "DueDate".

Hvordan jeg finde det? Jeg genlæste Lyng Salomons blog post om ændring af CQWP at vise yderligere kolonner af data. Hun beskriver denne proces på trin #13. Stole på det. Det er korrekt. Mindst, var det rigtige for mig. Jeg ikke stole på det i første omgang for en anden kolonne med et meget længere navn.

Jeg siger "tillid til det" fordi jeg ikke stole på det og sandsynligvis spildt nær to timer butting mit hoved ind til en væg. Efter jeg løst "DueDate" Navn, Jeg ønskede at tilføje et nyt felt til <CommonViewFields>. Ved hjælp af Solomon teknik, Jeg fik en kolonnenavn som "XYZ_x0020_Project_x0020_Due_x00".

Jeg tænkte ved mig selv, Det er klart en afkortet navn. Jeg gik videre og un-afkortet det uden held. Jeg endelig brugt navnet tilsyneladende afkortet og sig arbejdede.

Bonus tip: Da jeg arbejdede med CQWP, Hvis jeg har tilføjet et dårligt internt navn til <CommonViewFields>, CQWP vil fortælle mig, at forespørgslen havde returneret nogen resultater. Men, Hvis jeg har tilføjet en datatype for feltnavn, den vil returnere et resultat. Tilføje data maskeret type faktisk et problem da jeg refererer til en ikke-eksisterende felt. Jeg kan tilføje det, men når jeg prøvede at vise sin værdi, Jeg vil altid få en blank.

Dette ikke maskere fejlen:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

Dette maske fejlen:

<CommonViewFields>Due_x0020_Date,Dato og klokkeslæt;</CommonViewfields>

</slutningen>