Rask og enkel: Et Web-område som bruker SharePoint-objektmodellen i C#

Jeg forsøkt forskende for en liten bit-koden som skal vise hvordan jeg kan lage en ny SPWeb i en områdesamling. Jeg fant det som raskt eller lett som jeg forventet så jeg tenkte jeg ville klapse sammen en liten post om emnet.

Denne koden skaper en ny Wiki-side:

 SPSite siteCollection;

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

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy tittel",
        "xyzzy beskrivelse", 1033, SPWebTemplate.WebTemplateWIKI, USANN, USANN);

Min første søk mislyktes fordi jeg var på utkikk etter fraser som "klargjøre et webområde som bruker sharepoint-objektmodellen" og lignende.

Hvis du Søk for "Webs.Add()", du finner en rekke svært nyttig bloggen, MSDN-artiklene og SDK-dokumentasjon som går i dybden på dette emnet. Jeg definitivt anbefale Dette nettstedet.

</slutten>

Abonner på bloggen min.

Technorati Merkelapper:

Integrere SharePoint Designer arbeidsflyter med webtjenester

Jeg har spilt med egendefinerte handlinger for SharePoint Designer stund (se her for noen detaljerte ting, Hvis interesse).

I min nåværende prosjekt, Vi må gjøre noen ganske tunge løft og vi ønsker å bruke deklarativ SPD arbeidsflyt til å administrere den tilknyttede forretningsprosessen.

Lang historie kort, Dette er helt mulig. Jeg utvidet min Codeplex prosjekt for å starte en "helper service" og nå kan vi kalle en tjeneste direkte fra en SPD-arbeidsflyt.

Her er:

 offentlig streng Sentralen(
        Guiden WebID, // Vedtatt av runtime miljøet
        Guiden Område-ID, // Vedtatt av runtime miljøet
        streng ListID, // Passerte RTE (vet ikke hvorfor dette er en streng, ikke en GUID)
        Int ListItemID, // Passerte RTE.
        streng XmlMessage) // Vedtatt av brukeren som deklarert i SPD.

Dette utnytter det faktum at vi kan få på viktige arbeidsflytinformasjon, som nettstedet, IDen, osv.. Dette er godt dokumentert på flere steder for de av dere interessert i å opprette din egen egendefinerte handlinger. Ideen er å trekke ut XML-strengen som er angitt av brukeren for å sende en riktig prosedyre. Stæsj!

Dessverre, Dette er åpenbart en enveisbillett ned til "Loosey Goosey" anti-mønster land, men det er bedre enn å treffe en murvegg 🙂

Er det en anti-mønster hvis du gjør det selv om du vet det er en anti-mønster?

Jeg håper å bryte dette inne Codeplex i nær fremtid. Hvis du er interessert i meg gjør det., gi meg dytt (e-post eller Legg igjen en kommentar) og jeg vil være så mer begeistret for å gjøre det 🙂

</slutten>

Abonner på bloggen min.

Technorati Merkelapper: ,

Søndag Funny: “Jeg lurer på om passordet er …”

Jeg har nylig kjøpt lunsj for min bror (som vanlig) og vi endte opp med å snakke om morsomme ting som vi gjorde på våre respektive høyskoler. På min alma mater, Lafayette College, faglig støtte IT-avdelingen hadde en svært inkluderende måte om det.. Vi fikk mye tau og jeg tok fordel av tider.

To mine beste minner knyttet til min gode venn, Gabe. Han hadde gjort forferdelig feil i å fortelle folk hans freshman året at "jeg er en førsteårsstudent, men jeg har Sophomore stående" på grunn av de ulike avanserte plassering klassene han hadde tatt, osv.. Mange av oss lå på samme måte, men vi snakker ikke om det så mye. Hans eldre år, Når vi introduserte ham for folk, Vi ville si "Dette er Gabe. Han er en Senior, men han har Sophomore stående ".

Høgskolen hadde noen solen arbeidsstasjon/servere kjører X-vinduet. De hadde gigantiske skjermer og ingeniører brukt dem for CAD og annet kjedelig ingeniør. Vi CS folk brukte dem til å lære programmering og, selvfølgelig, spille spill.

Vi ikke liker datamaskinen-hjelpeløs ingeniører for mye så en av våre favoritt ting å gjøre ville være å telnet til boksen de var på og kjøre X-øye på dem.. Dette ville popmusikk opp et par øyne som fulgte musen rundt på skjermen. Du kan pop opp enda mer og har bokstavelig talt et dusin eller flere av X-øye programmer kjører. Prøv å ikke le høyt når en ulykkelig ingeniør prøver å lukke X-øye etter X-øye og mumle under pusten om det 🙂

Vi spilte også X-trek på disse boksene. Å gjøre det, du måtte laste ned kilden, få ulike avhengigheter hvor du kan finne dem og bygge den. Jeg var ikke en sofistikert C-programmerer, men jeg kunne lese header-filer. Jeg var ute gjennom disse og fant direktiver som "#DEFINE MAX_TORPEDO_DISTANCE 10". Jeg spilte rundt med det øker rekkevidde og makt faser og torpedoer, re-bygget det og ødela Gabe neste gang vi spilte.

Gabe var også en stor fan av et TV-show kalt Blakes 7. Jeg hadde aldri sett det., men som ikke hindre meg fra å insistere på at Dr. Hvem er den overlegen Vis. Argumentene vil til tider bli oppvarmede 🙂

En dag, Det slo meg at jeg trolig kunne gjette sin UNIX passord. Jeg satt ved siden av ham en dag og annonsert i en høy tone, "Jeg skal gjette passordet akkurat nå, Gabe." "Ja, høyre" var hans svar. Jeg deretter logget inn, angitt hans bruker-id, snudde seg mot ham, skrevet og sagt høyt, "Jeg lurer på om det B-L-A-K-E-7" ? Touch skrive har aldri betalt seg så vakkert som den gjorde den dagen.

neste uke (eller snart): Flere datamaskinen room antics fra college.

Har du noen å dele? Forlate en kommentar eller email meg og jeg vil publisere dem her.

</slutten>

Abonner på bloggen min.

Technorati Merkelapper:

Mindre offentlig kunngjøring: Windows Live sikkerhetsinnstillinger og kontakte Space-eiere

Jeg får en håndfull meldinger fra personer via innebygget "send en melding" funksjonen Microsoft gir levende mellomrom (som også er vert for bloggen min) hver måned.

Om lag en tredel av tiden, disse brukerne har sikret deres live spaces-konto slik at jeg ikke kan svare. Dette er en slags anti-spam funksjon jeg antar.

</slutten>

Enkel forklaring: “Verdien faller ikke innenfor forventet område.”

OPPDATERINGEN: En anonym plakat igjen en flott kommentar om interne navnene. Les det.

Når du arbeider med hendelsesmottakere og annen kode som refererer til SharePoint-listeelementer via objektmodellen, Jeg gjøre ofte feil som genererer denne feilen under kjøring:

Feil ved lasting og kjører hendelsesmottaker Conchango.xyzzyEventReceiver i xyzzy, Versjon = 1.0.0.0, Culture = neutral, PublicKeyToken = 0dc50a750396c3ac. Tilleggsinformasjon er under. : Verdien ikke er innenfor det forventede området.

Jeg tror dette er en ganske generisk feil som er potensielt forårsaket mange forskjellige måter. Men, en enkel forklaring er at jeg henviser en feltet feil. Hvis feltet er "Forfallsdato", Jeg må referere til den som dette i en hendelsesmottaker:

Egenskaper.ListItem["Forfallsdato"]

Når jeg feilstaver eller bruke feil saken referert feltet, SharePoint genererer ovenfor nevnte kjøretidsfeil. For eksempel, Dette er feil:

Egenskaper.ListItem["forfallsdato"]

</slutten>

Abonner på bloggen min.

Technorati Merkelapper:

Sluttbrukeren Quick tips: Sorter visninger i et dokumentbibliotek, Liste, osv..

Vi kan, bør og oppretter mange visninger i SharePoint-lister (dokumentbiblioteker, egendefinerte lister, osv.). SharePoint viser alltid tilgjengelige visninger i alfabetisk rekkefølge. Vi kan ikke forandre dette ved hjelp av funksjonen for. Hvis det kan gjøres via tilpasning (og jeg er ikke sikker på at det kan), Det er langt til teknisk for din typiske sluttbruker.

Hvis du vil styre rekkefølgen som SharePoint viser tilgjengelige visninger, bare før opp før et nummer eller en bokstav til visningen, som i:

1 – Etter regning
2 – Alle dokumenter
3 – Forfallsdatoen

-eller-

A – Etter regning
B – Alle dokumenter
C – Forfallsdatoen

Jeg har også laget visninger formålet er strengt å mate en KPI. Jeg har fulgt denne navnekonvensjonen:

Z_KPI_[Beskrivelse]

Som fører til at min "KPI" visninger vises nederst på listen.

</slutten>

Abonner på bloggen min.

Technorati Merkelapper: ,

Søndag Funny: “Da jeg var liten gutt”

Som forelder, et sted langs linjen jeg oppdaget den "da jeg var liten gutt" knep.

Min sønn, sannsynligvis fire eller fem samtidig, spilte en ballong og som de fleste små gutter som spiller med ballonger, Han spratt den. Han var veldig opprørt. Verden hadde kommet til en slutt. Jeg sa til ham, «da jeg var liten gutt, Jeg hadde en ballong og det spratt og til slutt, Jeg fikk en ny ballong." Det syntes å hjelpe ham å takle hans tap og førte til en morsom snakke om hvordan det var da jeg var liten gutt.

Som fungerte bra som en trøst teknikk og jeg brukte den en flere ganger over de neste perioden. Jeg fikk problemer når når hans Monster Rancher 3 skapning døde. Jeg snakket om hvordan min hund, Prins, døde i en bilulykke. denne gangen, hans svar var, "Nå jeg føler dårlig om to ting!" Jeg shied unna den "når jeg var liten gutt" teknikk for trøst etter at.

Før døde hunden hendelsen, men, Jeg hadde også begynt å bruke teknikk for å overtale ham til å gjøre husarbeid. «Da jeg var liten gutt, Jeg måtte gå ut og få avisen", "rydde rommet mitt", "få mamma henne kaffekopp", osv..

Dette var ganske vellykket for en stund, men han begynte å stadig gjøre opprør mot tyranni min barndom. En hendelse, spesielt, markerte slutten. Jeg fortalte ham å bringe søppel bokser fra fortauskanten tilbake til garasjen. Han hevdet og jeg svarte, «Da jeg var liten gutt, Jeg måtte ta søpla tilbake til garasjen." Han svarte, "Oh ja! Vel da du var liten gutt, Det var dum!".

</slutten>

Abonner på bloggen min.

Technorati Merkelapper:

Visninger og kolonner i lister og dokumentbiblioteker kan ikke sikres

OPPDATERINGEN (02/29/08): Dette nye codeplex prosjektet synes en metode for å sikre enkeltkolonner: http://www.codeplex.com/SPListDisplaySetting. Hvis du har noen erfaring med det, Legg igjen en kommentar.

Forum Plakater stille ofte et spørsmål som dette: "Jeg har utsikt manager og og personalet utsikt en liste. Hvordan sikrer jeg manager visningen slik at ansatte ikke kan bruke den?"

De spør også ofte en relaterte spørsmål: "Jeg ønsker å sikre en bestemt metadata-kolonne slik at bare administratorer kan redigere kolonnen mens andre ikke kan engang se det."

Disse svarene gjelder både WSS 3.0 og MOSS:

  • SharePoint gir ikke ut av esken støtte for å sikre visninger.
  • SharePoint gir ikke ut-av-støtte for sikkerhet kolonner.

Det finnes flere teknikker som kan følge for å møte slike sikkerhetskrav. Her er hva jeg kan tenke på:

  • Bruke out-of-the-box sikkerhet på elementnivå. Utsikt ære alltid sikkerhet varekonfigurasjon. Hendelsesmottakere og/eller arbeidsflyt kan automatisere sikkerheten oppgave.
  • Bruke personlige visninger for "privilegert" visninger. Dette er enkelt nok å sette opp. Men, på grunn av deres "personlige" natur, disse må konfigureres for hver bruker. Bruk standard sikkerhetskonfigurasjon hindre andre i å opprette en personlig visning.
  • Bruke en webdelen for datavisning og implementere en slags AJAXy sikkerhetsløsning for trimming.
  • Roll din egen liste utfoldelse funksjonaliteten og innlemme sikkerhetstrimming på kolonnenivå.
  • Endrer dataregistreringsskjemaer og bruker JavaScript sammen med sikkerhetsmodellen implementere kolonnenivå sikkerhetstrimming.
  • Bruke et InfoPath-skjema for dataregistrering. Implementere kolonnenivå sikkerhetstrimming via web service samtaler til SharePoint og betinget Skjul felt etter behov.
  • Roll din egen ASP.NET data oppføring funksjon som implementerer kolonnen sikkerhetstrimming.

Ingen av disse alternativene er virkelig så stor, men det er minst en sti å følge hvis du må, Selv om det er vanskelig.

NOTE: Hvis du går ned noen av disse banene, ikke glem "handlinger-> Åpne Windows Utforsker". Du vil være sikker på at du tester med funksjonen å sørge for at det ikke fungerer som en "bakdør" og beseire din sikkerhetsoppsett.

Hvis du har andre ideer for eller erfaringer med å sikre kolonner eller visninger, vær så snill email meg eller Legg igjen en kommentar og jeg vil oppdatere dette oppslaget etter behov.

</slutten>

Abonner på bloggen min.

Technorati Merkelapper:

Quick Tips: BDC ADF versjonsnumrene er din venn

Hvis du er hånd-koding ADF filer og gjør mye av kode/import/test, Bruk versjonsnummeret til å gjøre livet ditt enklere.

Jeg hater å innrømme det., men før denne uken, Jeg var alltid slette den automatiske Dokumentmateren og importerer den på nytt. Dette vil bryte min forretningsdatakolonner og gjøre meg re-wire dem. Alle unødvendige.

Fil dette under "det er tydelig 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" Versjon="1.2.0.0" navn="xyzzyDocumentReview" xmlns="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Endre den versjonen og importen og den eksisterende forretningsdatakolonnen bruker den oppdaterte versjonen automatisk med ytterligere konfigurasjon kreves.

</slutten>

Abonner på bloggen min.

Technorati Merkelapper:

Løsning: BDC Picker viser bare én kolonne med resultater

I mitt pågående forsøk på å gi en mer nyttig oppslagskolonnen ved hjelp av BDC, Jeg traff en vegg med BDC plukkeren. Hvis du ikke ser det, BDC plukkeren ligner på en folk-velgeren bortsett fra at det fungerer med kolonner av typen "business data".

Du tilgang plukkeren ved å klikke på ikonet åpen bok av en forretningsdatakolonne som vist:

bilde

Bildet over viser en forretningsdatakolonne kalles "Master dokument-Id". Denne kolonnen er koblet, via BDC, til en webtjeneste. Webtjenesten returnerer to kolonner med informasjon: Dokument-ID og tittel. Business formålet her er å gi en "dette dokumentet er basert på" funksjonen. Brukere velge en "master" dokumentet, og når de spare, en hendelsesmottaker kopierer meta datafelt fra refererte master.

Som standard, BDC plukkeren ser slik ut når jeg søker etter et dokument med ID = "38":

clip_image002

Det er nyttig, men ikke gode nok. Folk tror ikke i IDene, de tenker i form av titler og/eller andre metadata. Plukkeren lar deg søke i andre kolonner (f.eks. Tittel) men ikke vise den faktiske listen over titler funnet, bare deres DocId er som vist her:

clip_image002[1]

(Skjermbildet er ikke så stor fordi jeg ikke gjorde plukke et søk som alle gyldige resultater, men du kan se at hvis det hadde funnet noen resultater, det ville bare ha vist Docids, ikke titler).

Jeg søkte høyt og lavt for svaret på dette og ikke. Min kollega, den ærverdige Jonathan Bradshaw, hadde møtt og løst problemet. Da jeg nådde til ham om hjelp, han pekte meg i riktig retning.

Konfigurere plukkeren for å vise flere kolonner via ShowInPicker»" eiendom i den automatiske Dokumentmateren:

<Egenskapen navn="ShowInPicker" Type="System.Boolean">sann</Egenskapen>

Mer detaljert:

  <!-- Tittel -->
  <TypeDescriptor TypeName="System.String" navn="Tittel" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Tittel</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Egenskaper>
      <Egenskapen navn="DisplayByDefault" Type="System.Boolean">sann</Egenskapen>
      <Egenskapen navn="ShowInPicker" Type="System.Boolean">sann</Egenskapen>
    </Egenskaper>
  </TypeDescriptor>

Denne egenskapen presentere et mindre problem. Så snart du setter den gang, du må angi det for hver kolonne du vil vise. I mitt tilfelle, BDC picker viste DocId som standard. Men, Når jeg lagt "ShowInPicker" tittel, DocId vises ikke lenger. Jeg løste det ved å uttrykkelig angi egenskapen ShowInPicker for Doc-ID.

Her er resultatet:

bilde

(Jeg skal forklare de odde-ser "168 – CamlSchema.xsd" bygging i en fremtidig blogginnlegg. Kort sagt, Det er en sammensatt streng som gir en litt bedre brukeropplevelse).

selvfølgelig, å ha skrevet denne bloggpost, Jeg gjorde et søk etter "ShowInPicker" og fant mange treff, inkludert denne: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Det forklarer betydningen av denne eiendommen sammen med noen andre gode BDC ting.

</slutten>

Abonner på bloggen min!

Technorati Merkelapper: