Månadsarkiv: Februari 2008

Mindre offentligt tillkännagivande: Windows Live-säkerhetsinställningar och kontakta utrymme ägare

Jag får en handfull meddelanden från personer via inbyggt "Skicka ett meddelande" funktionen Microsoft ger levande utrymmen (som också är värd min blogg) varje månad.

Ungefär en tredjedel av tiden, Dessa användare har säkrat sina live spaces-konto så att jag inte kan svara. Detta är någon form av anti-spam funktionen antar jag.

</slutet>

Enkel förklaring: “Värde faller inte inom det förväntade intervallet.”

UPPDATERING: En anonym affisch lämnade en bra kommentar om interna namn. Se till att läsa den.

När du arbetar med event-mottagare och annan koden som refererar till SharePoint-listobjekt via objektmodellen, Jag gör ofta misstag som genererar detta fel vid körning:

Fel vid laddning och kör händelsemottagare Conchango.xyzzyEventReceiver i xyzzy, Version = 1.0.0.0, Kultur = neutral, PublicKeyToken = 0dc50a750396c3ac. Ytterligare information finns under. : Värdet faller inte inom det förväntade intervallet.

Jag tror detta är en ganska allmänt fel som eventuellt orsakas många olika sätt. Men, en enkel förklaring är att jag är förseende ett fält felaktigt. Om namnet på fältet är "Förfallodatum", Jag måste använda det såhär i en händelsemottagare:

egenskaper.ListItem["Due Date"]

När jag stavar fel eller använder fel fallet när du refererar till fältet, SharePoint genererar ovan nämnde körningsfel. Till exempel, Detta är fel:

egenskaper.ListItem["due Date"]

</slutet>

Prenumerera på min blogg.

Technorati Tags:

Slutanvändaren Snabbtips: Sortera vyer i ett dokumentbibliotek, Lista, m.m..

Vi kan, bör och skapar många åsikter i SharePoint-listor (dokumentbibliotek, anpassade listor, m.m.). SharePoint innehåller alltid tillgängliga vyer i alfabetisk ordning. Vi kan inte ändra detta med hjälp av funktionen box. Om det kan göras via anpassning (och jag vet inte om det kan), Det är långt till teknisk för din typiska slutanvändare.

Om du vill styra i vilken SharePoint listor tillgängliga vyer, helt enkelt Lägg en siffra eller bokstav till vynamnet, som i:

1 – Av materialtyp
2 – Alla dokument
3 – Förfallodatum

-eller-

A – Av materialtyp
B – Alla dokument
C – Förfallodatum

Jag har också skapat vyer vars syfte är strängt att mata en KPI. Jag har följt den här namngivningskonventionen:

Z_KPI_[Beskrivning]

Som orsakar min "KPI" vyer visas längst ned i listan.

</slutet>

Prenumerera på min blogg.

Söndag Funny: “När jag var en liten pojke”

Som förälder, någonstans längs linjen jag upptäckte den "när jag var en liten pojke" trick.

Min son, förmodligen fyra eller fem på gång, spelade en ballong och gillar mest små pojkar som spelar med ballonger, han dök det. Han var mycket upprörd. Världen hade kommit till ett slut. Jag sa till honom, "när jag var liten pojke, Jag hade en ballong och den dök och så småningom, Jag fick en ny ballong." Det verkade hjälpa honom att klara av sin förlust och ledde till en rolig talar om hur det var när jag var en liten pojke.

Som fungerat bra som en tröst teknik och jag använde det en flera gånger under de nästa tid. Jag fick i trubbel en gång när hans Monster Rancher 3 varelsen dog. Jag pratade om hur min hund, Prince, hade dött i en bilolycka. Den här gången, hans svar var, "Nu känner jag mig dåligt om två saker!" Jag skyggat med den "när jag var en liten pojke" teknik för tröst efter det.

Innan händelsen död hund, men, Jag hade också börjat använda teknik för att övertyga honom att göra sysslor. "När jag var en liten pojke, Jag var tvungen att gå ut och få tidningen", "städa mitt rum", "få mamma hennes kaffekopp", m.m..

Detta var ganska framgångsrik ett tag, men han började alltmer göra uppror mot tyranni min barndom. En händelse, i synnerhet, markerade slutet. Jag berättade för honom att få skräp burkar från trottoarkanten tillbaka till garaget. Han hävdade och jag svarade, "När jag var en liten pojke, Jag var tvungen att ta soporna tillbaka till garaget." Han svarade, "Oh ja! Väl när du var en liten pojke, Det var dum!".

</slutet>

Prenumerera på min blogg.

Technorati Tags:

Visningar och kolumner på listor och dokumentbibliotek kan inte säkras

UPPDATERING (02/29/08): Detta nya codeplex projekt tycks erbjuda en metod för att skydda enskilda kolumner: http://www.codeplex.com/SPListDisplaySetting. Om du har någon erfarenhet av att arbeta med det., lämna gärna en kommentar.

Forum affischer fråga ofta en som denna: "Jag har en manager syn och och en personal vy av en lista. Hur skyddar jag vyn manager så att personalen inte kan använda det?"

De frågar också ofta en relaterad fråga: "Jag vill säkra en kolumn med specifika metadata så att endast chefer kan redigera kolumnen medan andra inte kanske ens ser det."

Dessa svar gälla båda WSS 3.0 och MOSS:

  • SharePoint ger inte stöd för out-of-the-box för att säkra visningar.
  • SharePoint ger inte out-of-the-box stöd för säkerhet kolumner.

Det finns flera tekniker som kan följa för att möta dessa typer av säkerhetskrav. Här är vad jag kan komma på:

  • Använda out-of-the-box säkerhet på objektnivå. Utsikt över hedra alltid artikelkonfiguration säkerhet på objektnivå. Event mottagare och/eller arbetsflöde kan automatisera säkerhet tilldelning.
  • Använda personliga åsikter för "privilegierade" visningar. Detta är lätt att ställa in. Men, på grund av deras "personliga" natur, dessa måste konfigureras för varje användare. Använda standard säkerhetskonfiguration för att hindra någon annan från att skapa en personlig vy.
  • Använda en datavywebbdel och genomföra någon form av AJAXy säkerhetslösning trimning.
  • Rulla din egen display listfunktionerna och införliva säkerhetsoptimering på kolumnnivå.
  • Ändrar inmatningsformulär och använder JavaScript i samband med säkerhetsmodell för att genomföra kolumnnivå säkerhetsoptimering.
  • Använda ett InfoPath-formulär för datainmatning. Genomföra kolumnnivå säkerhetsoptimering via web tjänst samtal till SharePoint och villkorligt Dölj fält som behövs.
  • Rulla dina egna ASP.NET data inresa funktion som implementerar kolumn nivå säkerhetsoptimering.

Inget av dessa alternativ är verkligen så bra, men det finns åtminstone en väg att följa om du behöver, även om det är svårt.

ANMÄRKNING: Om du går ner någon av dessa vägar, Glöm inte om "åtgärder-> Öppna med Utforskaren". Du vill vara säker på att du testar med den funktionen att se till att det fungerar som en "bakdörr" och besegra dina säkerhetsprogram.

Om du har andra idéer för eller erfarenheter med att säkra kolumner eller visningar, Snälla maila mig eller lämna en kommentar och jag kommer uppdatera detta inlägg som lämpliga.

</slutet>

Prenumerera på min blogg.

Technorati Tags:

Snabbtips: BDC-ADF versionsnummer är din vän

Om du hand-kodande ADM-filer och gör en massa kod/import/provcyklerna, använda versionsnumret för att göra ditt liv enklare.

Jag hatar att erkänna det, men fram till denna vecka, Jag var alltid ta bort den automatiska Dokumentmataren och att importera det. Detta skulle bryta min business datakolumner och göra mig re-wire dem. Alla onödiga.

Fil detta under "det är uppenbart när man ser den".

Exempel:

<LobSystem
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.microsoft.com/Office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Typ="WebService" Version="1.2.0.0" Namn="xyzzyDocumentReview" xmlns="http://schemas.microsoft.com/Office/2006/03/BusinessDataCatalog">

Ändra att version och importera på nytt och den befintliga affärsdatakolumnen använder den uppdaterade versionen automatiskt med ingen ytterligare konfiguration krävs.

</slutet>

Prenumerera på min blogg.

Technorati Tags:

Lösning: BDC-Picker visar endast en kolumn av resultat

I min pågående försök att ge en mer användbar uppslagskolumnen med hjälp av BDC, Jag träffade en vägg med BDC-plockaren. Om du inte ser det, BDC-plockaren liknar en Personväljaren förutom att det fungerar med kolumner av typen "business data".

Du åt plockaren genom att klicka på symbolen med öppna boken av en affärsdatakolumn som visas:

bild

Ovanstående bild visar en affärsdatakolumn som kallas "Master dokument-Id". Kolumnen är ansluten, via BDC, till en webbtjänst.. Webbtjänsten returnerar två kolumner med information: Dokument-ID och titel. Business Syftet här är att ge en "detta dokument är baserad på" funktionen. Användare väljer en "master" dokumentet och när de sparar, en händelsemottagare kopieras meta datafälten från refererade master.

Som standard, BDC-plockaren ser ut så här när jag söker efter ett dokument vars ID = "38":

clip_image002

Det är bra, men inte tillräckligt bra. Människor tror inte i form av ID: N, de tycker om titlar och/eller andra metadata. Plockaren kan du söka på andra kolumner (t.ex. Avdelning) men kommer inte att Visa faktiska listan över titlar det Funna, bara deras DocId: s som visas här:

clip_image002[1]

(Skärmbilden är inte så bra eftersom jag inte plocka en sökning som returnerar alla giltiga resultat, men du kan se att om det hade funnit vissa resultat, Det skulle bara ha visat docids, inte titlar).

Jag sökte högt och lågt för svaret på detta och kunde inte. Min kollega, den ärevördiga Jonathan Bradshaw, hade haft och löst problemet. När jag nådde ut till honom om hjälp, Han pekade mig i rätt riktning.

Konfigurera färgväljaren för att visa flera kolumner via "ShowInPicker" egendom i den automatiska Dokumentmataren:

<Egenskapen Namn="ShowInPicker" Typ="System.Boolean">sant</Egenskapen>

Mer i detalj:

  <!-- Avdelning -->
  <TypeDescriptor TypeName="System.String" Namn="Avdelning" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Avdelning</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Egenskaper>
      <Egenskapen Namn="DisplayByDefault" Typ="System.Boolean">sant</Egenskapen>
      <Egenskapen Namn="ShowInPicker" Typ="System.Boolean">sant</Egenskapen>
    </Egenskaper>
  </TypeDescriptor>

Anger den här egenskapen medför ett mindre problem. Så snart du ställa in den en gång, Du måste ange det för varje kolumn som du vill visa. I mitt fall, BDC-picker visade DocId som standard. Men, När jag lagt till "ShowInPicker" till titel, DocId inte längre visas. Jag löste det genom att uttryckligen ange egenskapen ShowInPicker för Doc-ID.

Här är resultatet:

bild

(Jag ska förklara de besynnerliga "168 – CamlSchema.xsd" konstruktion i ett framtida blogginlägg. I korthet, Det är en sammanfogade strängen som möjliggör en något bättre användarupplevelse).

Självklart, att ha skrivit denna bloggpost, Jag gjorde en sökning efter "ShowInPicker" och hittade många träffar, inklusive denna: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Det förklarar innebörden av fastigheten tillsammans med några andra bra BDC-saker.

</slutet>

Prenumerera på min blogg!

Technorati Tags:

Snabb & Lätt: Skapa en mapp och tilldela en innehållstyp (Eller, Har din KPI: er och äta dem också)

För att undvika en KPI problemet Jag skrev om här, Jag gjorde en del tester och upptäckte att KPI arbete mot mappar med meta-data på samma sätt som de arbetar mot dokument eller listobjekt. Jag bevisade det ut genom att skapa en ny innehållstyp baserat på innehållstypen mapp och sedan läggas några fält. Jag skapade vissa indikatorer och visat sig själv som KPI: er fungerar som förväntat. Detta var en Välkommen nyhet. Det är inte perfekt, för att specificera-du får från är KPI mot mapparna inte exakt vad du vill. Detta är inte för mycket en nackdel i mitt fall eftersom 1) slutanvändarna vet inte bättre och 2) drill-down går till en mapp. De klicka på mappnamnet och de är i artikeln. Det är två klick i stället för en, vilket inte är slutet av världen.

Detta flöt fint med det arbete jag gjorde. Jag skapar en mapp för varje dokument som får laddas upp. Detta görs via en händelsemottagare. Som en följd, Det är en bit av kakan att hålla den den överordnade mappens Metadatat synkade med KPI-driven metadata från själva filen eftersom VVS är redan på plats. Detta gör att jag kan ha mina KPI:er och äta dem också 🙂

Jag ändrade händelsemottagare för att lägga till mappen och ange sedan den nya katalogen innehållstypen till min anpassade KPI-vänlig innehållstyp. Denna bit kod gjorde susen:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Dokument").Undermappar;
  SPFolder addedFolder = srcFolders.Add(egenskaper.ListItem.ID.ToString());
  SPContentTypeId kpiCT = nya SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Innehålls typ-ID"] = kpiCT;
  addedFolder.Item.Update();

Att hitta den verkliga innehållstyp-ID, Jag åt den innehållstypen via Webbplatsinställningar och kopiera/klistrade in det från URL som visas:

bild

</slutet>

Prenumerera på min blogg!

Technorati Tags: ,

Snabb och enkel: Få SPFolder för en SPListItem i en händelsemottagare

Jag hatar att erkänna det, men jag kämpade med den här alla dag. Min händelsemottagare behöver uppdatera ett fält av dess överordnade mapp. Detta lite visar hur man gör det:

privat void UpdateParentFolder(SPItemEventProperties egenskaper)
{

SPFolder thisItemFolder = egenskaper.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ godkännandestatus"] = "Goda nyheter, alla!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

I detta fall, Jag arbetar med ett dokumentbibliotek och egenskaper kommer från en ItemAdded-händelse.

Tricket är att du inte kan få SPFolder för artikeln direkt från själva objektet (dvs. egenskaper.ListItem.Folder är null). I stället, gå till listan artikelns associerad fil och få filens mapp.

</slutet>

Prenumerera på min blogg!

Technorati Tags:

Ännu en annan händelsemottagare Debug Trick

Jag är säker på att inte jag är den första personen att komma med detta. Men, Jag har inte märkt någon publicera ett trick som denna sedan jag började betala nära uppmärksamhet till gemenskapen i juli. Så, Jag trodde att jag skulle skicka det här snabbt och enkelt debug spets.

Jag arbetar på en händelsemottagare började genererar detta fel i den 12 kupan:

Fel vid laddning och kör händelsemottagare Conchango.xyzzyEventReceiver i xyzzy, Version = 1.0.0.0, Kultur = neutral, PublicKeyToken = blahbalhbalh. Ytterligare information finns under. : Object reference not set till en instans av ett objekt.

Jag visste inte var jag hade infört detta fel eftersom jag hade gjort för många saker i en av min kod/distribuera/provcyklerna.

Jag försökte Denna lösning att få min pdb där med förhoppningar att SharePoint 12 kupan skulle Visa stackspårning, men ingen lycka. Jag vet inte om det är möjligt och om någon gör, behaga låta mig veta 🙂

Jag vet att det är möjligt att Skriv din egen logga meddelanden till den 12 kupan. Ärligt talat, Jag ville ha något lite mindre skrämmande och snabbare att genomföra.

Det slog mig att jag åtminstone kunde få några grundläggande spårningsinformation genom att fånga och åter kasta generiska undantag som detta:

  försök {
    UpdateEditionDate(egenskaper);
  }
  fånga (Undantag e)
  {
    kasta nya Undantag("Dispatcher, UpdateEditionDate(): Undantag: [" + e.ToString() + "].");
  }

Detta visade upp i den 12 Hive thusly:

Fel vid laddning och kör händelsemottagare Conchango.xyzzyEventReceiver i xyzzy, Version = 1.0.0.0, Kultur = neutral, PublicKeyToken = blahblahblah. Ytterligare information finns under. : Dispatcher, UpdateEditionDate(): Undantag: [NullReferenceException.: Object reference not set till en instans av ett objekt. på Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties egenskaper) på Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties egenskaper, Sträng eventDescription)].

Som gav mig alla detaljer jag behövde för att spåra upp det särskilda problemet och jag förväntar mig att använda den mycket framöver.

</slutet>

Prenumerera på min blogg!