Snabb och enkel: Etablera en webbplats med SharePoint-objektmodellen i C#

Jag försökte en liten snutt koden som skulle visa hur jag kan skapa en ny SPWeb i en webbplatssamling. Jag hittade inte det som snabbt och enkelt som jag trodde så jag trodde jag skulle smälla ihop lite inlägg i ämnet.

Denna kod skapas en ny Wiki-webbplats:

 SPSite siteCollection;

    siteCollection = nya SPSite("http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy titel",
        "xyzzy Beskrivning", 1033, SPWebTemplate.WebTemplateWIKI, falskt, falskt);

Min första sökningar misslyckades eftersom jag letade efter fraser som "etablera en webbplats med sharepoint-objektmodellen" och liknande.

Om du Sök för "Webs.Add()", hittar du ett antal mycket användbara blogginlägg, MSDN artiklar och SDK-dokumentationen som går in i djupet i detta ämne. Jag rekommenderar definitivt denna webbplats.

</slutet>

Prenumerera på min blogg.

Technorati Tags:

Integrera SharePoint Designer arbetsflöden med Web Services

Jag har spelat med anpassade åtgärder för SharePoint Designer för en tid (se här för några detaljerade grejer, om som intresserar dig).

I mitt nuvarande projekt, Vi måste göra några ganska tunga lyft och vi vill använda declarative SPD arbetsflöde för att hantera tillhörande affärsprocessen.

Lång historia kort, Detta är fullt möjligt. Jag utökade min Codeplex projekt för att anropa en helper-tjänsten"" och nu kan vi anropa en webbtjänst direkt från ett SPD arbetsflöde.

Här är signaturen:

 offentliga sträng Dispatcher(
        GUID WebID, // Förbi runtime miljön
        GUID SiteID, // Förbi runtime miljön
        sträng ListID, // Förbi RTE (vet inte varför detta är en sträng, inte en GUID)
        int ListItemID, // Förbi RTE.
        sträng XmlMessage) // Passerade av användaren som deklarerats i SPD.

Detta utnyttjar det faktum att vi kan få på viktiga arbetsflödesinformation, som platsen, List-ID, m.m.. Detta är väl dokumenterat i flera förlägger för er intresserade av att skapa dina egna anpassade åtgärder. Tanken är att extrahera XML-strängen som anges av användaren att skicka ett lämpligt förfarande. Kul grejer!

Tyvärr, Detta är naturligtvis en enkelbiljett ner till "Loosey Goosey" anti mönster mark, but it’s better than hitting a brick wall 🙂

Är det en anti mönster om du gör det även om du vet att det är en anti mönster?

Jag hoppas att radbrytas inuti Codeplex detta inom en snar framtid. Om du är intresserad av mig så, ge mig säcken (e-post eller lämna en kommentar) and I’ll be that more enthusiastic about doing it 🙂

</slutet>

Prenumerera på min blogg.

Technorati Tags: ,

Söndag Funny: “Jag undrar om ditt lösenord är …”

Jag köpte nyligen lunch för min bror (som vanligt) och vi slutade prata om roliga saker som vi gjorde på våra respektive högskolor. På mitt alma mater, Lafayette College, den akademiska support IT-avdelningen hade ett mycket omfattande sätt om det. Vi fick en massa rep och jag utnyttjade som ibland.

Två mina favorit minnen relatera till min gode vän, Gabe. Han hade gjort hemska misstaget att tala om människor sitt första år som "Jag är en nybörjare, men jag har Sophomore stående" på grund av de olika avancerade placering klasserna hade han tagit, m.m.. Många av oss på samma sätt var belägna men vi prata inte om det så mycket. Hans sista år, När vi introducerade honom till människor, Vi skulle säga "här är Gabe. Han är Senior, men han har Sophomore stående ".

Kollegiet hade vissa Sun arbetsstationer/servrar kör X-Window. De hade gigantiska bildskärmar och ingenjörerna använde dem för CAD och andra tråkiga saker ingenjör. Vi CS människor använde dem för att lära sig att programmera och, Självklart, att spela spel.

Gjorde vi inte som dator-hjälplösa ingenjörerna för mycket så en av våra favorit saker att göra skulle vara att telnet till rutan de var på och kör X-eye på dem. Detta skulle dyka upp ett par ögon som följde med musen runt på skärmen. Du kan dyka upp ännu mer och har bokstavligen ett dussin eller mer för de X-eye program som körs. Try not to laugh out loud when a hapless engineer is trying to close X-eye after X-eye and muttering under his breath about it 🙂

Vi spelade även X-trek på dessa lådor. Att göra det, du var tvungen att hämta källan, få olika beroenden var du kan hitta dem och bygga den. Jag var inte en sofistikerad C programmerare, men jag kunde läsa header-filer. Jag letade igenom dessa och hittade direktiven som "#DEFINE MAX_TORPEDO_DISTANCE 10". Jag spelade med att ökar utbud och makt för faser och torpeder, byggs det och sedan förstörde Gabe nästa gång vi spelade.

Gabe var också ett stort fan av en TV-show kallad Blakes 7. Jag hade aldrig sett det, men som inte hindrar mig från att insistera att Dr. Vem är den överlägsen Visa. The arguments would get heated at times 🙂

En dag, Det slog mig att jag förmodligen kunde gissa hans UNIX lösenord. Jag satte mig bredvid honom en dag och meddelade i en hög ton, "Jag ska gissa ditt lösenord just nu, Gabe." "Ja, rätt" var hans svar. Jag sedan loggade in, in sitt användar-id, vände för att möta honom, skrev och sade högt, "Jag undrar om det är B-L-A-K-E-7" ? Touch typing har aldrig betalat sig lika vackert som det gjorde den dagen.

Nästa vecka (eller snart): Mer dator rummet upptåg från college.

Har du någon att dela? Lämna en kommentar eller maila mig och jag ska publicera dem här.

</slutet>

Prenumerera på min blogg.

Technorati Tags:

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: