Hurtig og enkel: Klargøre et websted ved hjælp af SharePoint objektmodel I C#

Jeg prøvede at søge efter en lille stump kode, der ville vise, hvordan jeg kan oprette en ny SPWeb i en gruppe af websteder. Jeg fandt det som hurtigt eller nemt, som jeg havde forventet, så jeg tænkte jeg ville smække sammen en lille post om emnet.

Denne kode opretter et nye Wiki-websted:

 SPSite siteCollection;

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

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy titel",
        "xyzzy beskrivelse", 1033, SPWebTemplate.WebTemplateWIKI, falsk, falsk);

Mine indledende søgninger mislykkedes, fordi jeg var på udkig sætninger som "bestemmelse et websted ved hjælp af sharepoint-objektmodellen" og lignende.

Hvis du Søg til "Webs.Add()", Du kan finde en række meget nyttige blog-indtastninger, MSDN artikler og SDK-dokumentationen, at gå i dybden med dette emne. Jeg absolut anbefale dette websted.

</slutningen>

Abonner på min blog.

Technorati Tags:

Integrere SharePoint Designer arbejdsprocesser med webtjenester

Jeg har spillet med brugerdefinerede handlinger til SharePoint Designer for nogle gang (Se her for nogle detaljerede stuff, Hvis der interesserer dig).

I min aktuelle projekt, Vi skal gøre nogle temmelig tunge løft og vi vil bruge deklarativ SPD workflow til at styre den tilknyttede forretningsprocesser.

Lang historie kort, Det er helt muligt. Jeg udvidede min Codeplex projekt for at påberåbe sig en "helper service" og nu vi kan påberåbe sig en webservice direkte fra en SPD workflow.

Her er signaturen:

 offentlige streng Senderen(
        GUID WebID, // Forbi runtime environment
        GUID SiteID, // Forbi runtime environment
        streng ListID, // Forbi RTE (ikke kender grunden til, at dette er en streng, ikke en GUID)
        int ListItemID, // Forbi RTE.
        streng XmlMessage) // Bestået af brugeren som erklæret i SPD.

Dette udnytter det faktum, at vi kan få på oplysninger om vigtige arbejdsproces, ligesom webstedet, liste-ID, osv. Det er veldokumenteret i flere steder for dem af jer interesseret i at skabe din egen brugerdefinerede handlinger. Ideen er at udtrække XML-streng, som fastsat af brugeren til at afsende en passende procedure. Sjove ting!

Desværre, Dette er naturligvis en envejs billet ned til "Loosey Goosey" anti-pattern jord, but it’s better than hitting a brick wall 🙂

Er det en anti-pattern, hvis du gør det, selvom du ved, det er en anti-pattern?

Jeg håber, at wrap det inde Codeplex i den nærmeste fremtid. Hvis du er interesseret i mig gøre det., give mig sækken (e-mail eller efterlade en kommentar) and I’ll be that more enthusiastic about doing it 🙂

</slutningen>

Abonner på min blog.

Technorati Tags: ,

Søndag Funny: “Hvis din adgangskode er mon …”

Jeg har for nylig købt frokost til min bror (som sædvanlig) og vi endte med at tale om sjove ting, som vi gjorde på vores respektive kollegier. På mit alma mater, Lafayette College, den akademiske support IT-afdelingen havde en meget omfattende måde om det. Vi fik en masse af reb og jeg benyttede sig af, til tider.

To min foretrukne memories vedrører min gode ven, Gabe. Han havde gjort den frygtelige fejl at fortælle folk sit freshman år, at "Jeg er en freshman, Men jeg har andenpladsen stående" på grund af de forskellige avancerede placering klasser havde han taget, osv. Mange af os var ligeledes beliggende men vi taler ikke om det så meget. Hans senior år, Når vi introducerede ham til mennesker, Vi ville sige "Dette er Gabe. Han er en Senior, men han har andenpladsen stående ".

Kollegiet havde nogle solen/arbejdsstation servere, der kører X-vindue. De havde gigantiske skærme og ingeniører brugte dem til CAD og andre kedelige ting, ingeniør. Vi CS folk brugte dem til at lære programmering og, Selvfølgelig, at spille spil.

Vi didn't ligesom de computer-hjælpeløse ingeniører til meget så en af vores foretrukne ting at gøre ville være at telnet til boksen de var på og køre X-eye på dem. Dette vil poppe op et par øjne, der fulgte med musen rundt på skærmen. Du kan pop op endnu mere og har bogstaveligt talt et dusin eller flere af de X-eye applikationer kører. 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 spillede også X-trek på disse kasser. At gøre det, skulle du hente kilden, få forskellige afhængigheder, hvor du kan finde dem og bygge det. Jeg var ikke en sofistikeret C programmør, men jeg kunne læse header-filer. Jeg var på udkig gennem disse og fundet direktiver som "#DEFINE MAX_TORPEDO_DISTANCE 10". Jeg spillede rundt med at øger rækkevidde og magt for faser og torpedoer, re-built det og derefter destrueres Gabe næste gang vi spillede.

Gabe var også en stor fan af et tv-show kaldet Blakes 7. Jeg havde aldrig set det, men der ikke hindre mig i at insistere på, at Dr. Hvem er den overlegen Vis. The arguments would get heated at times 🙂

Én dag, Det forekom mig, at jeg sandsynligvis kunne gætte hans UNIX password. Jeg satte mig ned ved siden af ham en dag og annonceret i en høj tone, "Jeg vil gætte din adgangskode lige nu, Gabe." "ja, højre" var hans svar. Jeg derefter logget ind, indtastet sit bruger-id, slået over ham, skrevet og sagde højlydt, "Hvis det er mon B-L-A-K-E-7" ? Blindskrift har aldrig betalt så smukt som den gjorde dag.

Næste uge (eller snart): Flere computer værelse fjollerier fra college.

Har du nogen at dele? Efterlade en kommentar eller email mig, og jeg vil offentliggøre dem her.

</slutningen>

Abonner på min blog.

Technorati Tags:

Mindre offentlig bekendtgørelse: Windows Live sikkerhedsindstillinger og kontakter plads ejere

Jeg modtager en håndfuld af meddelelser fra enkeltpersoner via indbygget "sende en meddelelse" funktionen Microsoft giver levende rum (der er også vært for min blog) hver måned.

Omkring en tredjedel af tid, Disse brugere har sikret deres live spaces-konto, så jeg ikke kan svare. Dette er en slags anti-spam funktion jeg formoder.

</slutningen>

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:

Slutbrugeren hurtige Tip: Sortere visninger i et dokumentbibliotek, Liste, osv.

Vi kan, bør og oprette mange visninger på SharePoint-lister (dokumentbiblioteker, brugerdefinerede lister, osv). SharePoint lister altid tilgængelige visninger i alfabetisk rækkefølge. Vi kan ikke ændre dette ved hjælp af funktionen boks. Hvis det kan gøres via tilpasning (og jeg er ikke sikker på, at det kan), Det er langt til den tekniske for dit typiske slutbruger.

Hvis du vil styre rækkefølgen, som SharePoint-lister tilgængelige visninger, blot tilføjer et tal eller bogstav til navnet på visningen, som i:

1 – Ved materialetype
2 – Alle dokumenter
3 – Forfaldsdato

-eller-

A – Ved materialetype
B – Alle dokumenter
C – Forfaldsdato

Jeg har også lavet visninger hvis formål er strengt at fodre en KPI. Jeg har fulgt denne navngivningskonvention:

Z_KPI_[beskrivelse]

Der forårsager min "KPI" visninger vises nederst på listen.

</slutningen>

Abonner på min blog.

Technorati Tags: ,

Søndag Funny: “Da jeg var en lille dreng”

Som forælder, et sted langs linjen jeg opdagede den "da jeg var en lille dreng" trick.

Min søn, sandsynligvis fire eller fem dengang, spillede en ballon og gerne mest små drenge, at spille med markeringsbobler, han puttede den. Han var meget ked af. Verden var kommet til en ende. Jeg sagde til ham, "da jeg var lille dreng, Jeg havde en ballon og det dukkede og til sidst, Jeg fik en ny ballon." Det syntes at hjælpe ham håndtere sin tab og førte til en sjov snak om, hvad det var ligesom da jeg var en lille dreng.

Det fungerede godt som en trøst teknik og jeg brugt det flere gange i den næste periode. Jeg fik ind i problemer en gang da hans Monster Rancher 3 væsen døde. Jeg talte om hvordan min hund, Prins, døde i en bilulykke. Denne gang, var hans svar, "Nu jeg føler dårlige om to ting!" Jeg veget tilbage fra ved hjælp af den "da jeg var en lille dreng" teknik til trøst efter at.

Før den døde hund hændelse, dog, Jeg var også begyndt at bruge teknikken for at overbevise ham om at gøre gøremål. "Da jeg var en lille dreng, Jeg havde at gå ud og Hent avisen", "ren mit værelse", "get Mommy hendes kaffe cup", osv.

Dette var også temmelig vellykket i et stykke tid, men han begyndte i stigende grad oprør mod tyranni i min barndom. En begivenhed, navnlig, markerede afslutningen. Jeg fortalte ham at bringe skraldespande fra bremse tilbage til garagen. Han fremførte, og jeg reagerede, "Da jeg var en lille dreng, Jeg måtte tage skraldet tilbage til garagen." Han reagerede, "Åh ja! Godt, når du var en lille dreng, Det var DUM!".

</slutningen>

Abonner på min blog.

Technorati Tags:

Visninger og kolonner på lister og dokumentbiblioteker kan ikke være sikret

OPDATERING (02/29/08): Dette nye codeplex projekt synes at give en metode til sikring af enkelte kolonner: http://www.codeplex.com/SPListDisplaySetting. Hvis du har nogen erfaring med at arbejde med det, venligst efterlade en kommentar.

Forum plakater stille ofte et spørgsmål som dette: "Jeg har en manager visning og og et personale visning af en liste. Hvordan sikrer jeg visningen manager, således at personalet ikke kan bruge det?"

De spørger også jævnligt en beslægtet afhøre: "Jeg ønsker at sikre en kolonne med specifikke metadata, således at kun ledere kan redigere denne kolonne, mens andre ikke kan selv se det."

Disse svar gælder for begge WSS 3.0 og MOSS:

  • SharePoint indeholder ikke out-of-the-box understøttelse for at sikre visninger.
  • SharePoint indeholder ikke out-of-the-box understøttelse for sikkerhed kolonner.

Der er flere teknikker man kan følge for at opfylde disse former for sikkerhedskrav. Her er hvad jeg kan tænke på:

  • Bruge out-of-the-box sikkerhed på elementniveau. Udsigt ære altid vare sikkerhedskonfiguration. Hændelsesmodtagere og/eller arbejdsprocessen kan automatisere sikkerhedsindstilling.
  • Bruge personlige visninger for "privilegeret" visninger. Disse er let nok at sætte op. Dog, på grund af deres "personlige" natur, disse skal konfigureres for hver bruger. Brug Standardsikkerhed konfiguration til at forhindre andre i at oprette en personlig visning.
  • Bruge webdelen datavisning og gennemføre en slags AJAXy trimning sikkerhedsløsning.
  • Roll din egen liste display funktionalitet og indarbejde sikkerhed trimning på kolonneniveau.
  • Ændre dataindtastningsformularerne og bruge JavaScript sammen med sikkerhedsmodellen for at gennemføre kolonneniveau sikkerhed trimning.
  • Bruge en InfoPath-formular til indtastning af data. Gennemføre kolonneniveau sikkerhed trimning via web serviceopkald til SharePoint og betinget hide felter efter behov.
  • Roll din egen ASP.NET data entry funktion, der implementerer kolonne sikkerhed trimning.

Ingen af disse muligheder er virkelig så stor, men der er mindst en sti at følge, hvis du skal, Selvom det er svært.

NOTE: Hvis du går ned nogen af disse stier, Glem ikke om "handlinger-> Åbn i Windows Stifinder". Du vil være sikker på, at du tester med denne funktion for at sikre, at det ikke virker som en "bagdør" og besejre dine sikringsordning.

Hvis du har andre ideer til eller erfaringer med sikring af kolonner eller visninger, Vær så venlig e-mail mig eller efterlade en kommentar og jeg vil opdatere denne postering som passende.

</slutningen>

Abonner på min blog.

Technorati Tags:

Hurtige Tip: BDC-ADF versionsnumrene er din ven

Hvis du hånd-kodning ADF filer og gør en masse import-kode-test cykler, Brug den gengivelse antal til at gøre dit liv nemmere.

Jeg hader at indrømme det., men indtil denne uge, Jeg altid slette ADF'EN og importere det igen. Dette ville bryde min business datakolonner og gøre mig re-wire dem. Alle unødvendige.

Fil dette under "det er indlysende, når du ser det".

Eksempel:

<LobSystem
xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance" XSi:schemaLocation="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Type="WebService" Version="1.2.0.0" Navn="xyzzyDocumentReview" xmlns="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Ændre denne version og re-importere og den eksisterende firmadatakolonne bruger den opdaterede version automatisk med kræves ingen yderligere konfiguration.

</slutningen>

Abonner på min blog.

Technorati Tags:

Løsning: BDC Picker viser kun én kolonne af resultater

I min igangværende forsøg på at give en mere nyttigt opslagskolonnen ved hjælp af BDC, Jeg ramte en mur med BDC-picker. Hvis du ikke ser det, BDC-picker er svarende til en mennesker picker, bortset fra at det virker med kolonner af typen "business data".

Du få adgang til vælgeren til ved at klikke på symbolet for den åbne bog af en firmadatakolonne som vist:

billede

Ovenstående billede viser en firmadatakolonne, kaldet "Master dokument Id". Denne kolonne er forbundet, via BDC, til en webtjeneste. Webtjenesten returnerer to kolonner med oplysninger: Dokument-ID og titel. Den forretningsmæssige formål her er at give en "dette dokument er baseret på" funktion. Brugerne vælger en "master" dokument, og når de gemmer, en event modtager kopier meta datafelter fra den refererede master.

Som standard, BDC-picker ser sådan her ud når jeg søger efter et dokument med ID'ET = "38":

clip_image002

Det er nyttigt, men ikke godt nok. Folk tænker ikke i id'er, de tror i titler og/eller andre metadata. Farvevælger kan du søge på andre kolonner (strømsparetilstand. Titel) men ikke vil vise den aktuelle liste af titler det fundet, bare deres DocId's som vist her:

clip_image002[1]

(Skærmbilledet er ikke så stor, fordi jeg ikke vælge en søgning, der returnerer nogen gyldige resultater, men du kan se, at hvis det havde fundet nogle resultater, Det ville kun have vist Docids, ikke titler).

Jeg søgte højt og lavt efter svar på dette og mislykkedes. Min kollega, de ærværdige Jonathan Bradshaw, havde stillet og løst problemet. Da jeg nåede til ham for at få hjælp, han pegede mig i den rigtige retning.

Konfigurere picker for at vise flere kolonner via "ShowInPicker" ejendom i ADF'EN:

<Ejendom Navn="ShowInPicker" Type="System.Boolean">True</Ejendom>

Mere detaljeret:

  <!-- Titel -->
  <TypeDescriptor TypeName="System.String" Navn="Titel" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Titel</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Egenskaber>
      <Ejendom Navn="DisplayByDefault" Type="System.Boolean">True</Ejendom>
      <Ejendom Navn="ShowInPicker" Type="System.Boolean">True</Ejendom>
    </Egenskaber>
  </TypeDescriptor>

Angiver denne egenskab indfører et mindre problem. Så snart du indstille det én gang, Du skal angive det for hver kolonne, du vil vise. I mit tilfælde, BDC-picker viste DocId som standard. Dog, Når jeg tilføjet "ShowInPicker" til titel, DocId ikke længere vises. Jeg løste det ved eksplicit at angive egenskaben ShowInPicker for Doc ID.

Her er resultatet:

billede

(Jeg vil forklare de mærkeligt udseende "168 – CamlSchema.xsd" konstruktion i et kommende blogindlæg. Kort sagt, Det er en sammenkædede streng, der giver mulighed for en lidt bedre brugeroplevelse).

Selvfølgelig, efter at have skrevet denne blog, Jeg gjorde netop en søgning efter "ShowInPicker" og fundet mange hits, herunder denne ene: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Det forklarer betydningen af ejendommen sammen med nogle andre gode BDC-ting.

</slutningen>

Abonner på min blog!

Technorati Tags: