Snelle en eenvoudige: Inrichten van een website die SharePoint-objectmodel gebruiken In C#

Ik probeerde op zoek naar een beetje stukje code dat zou laten zien hoe maak ik een nieuwe SPWeb in een siteverzameling. Ik heb niet het vinden als snel of gemakkelijk als ik had verwacht, dus ik dacht dat ik zou klap samen een beetje post op het onderwerp.

Deze code maakt u een nieuwe wikisite:

 SPSite siteCollection;

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

    SPWeb w = siteCollection.OpenWeb();

    w.webs.add("xyzzy", "xyzzy titel",
        "xyzzy beschrijving", 1033, SPWebTemplate.WebTemplateWIKI, vals, vals);

Mijn eerste zoekopdrachten is mislukt omdat ik was op zoek naar uitdrukkingen zoals "het inrichten van een website met behulp van sharepoint-objectmodel" en dergelijke.

Als u zoeken voor "Webs.Add()", u vindt een aantal zeer nuttig blog inzendingen, MSDN-artikelen en SDK-documentatie die verder gaan in de diepte over dit onderwerp. Ik zeker aanraden deze site.

</einde>

Abonneren op mijn blog.

Technorati Tags:

SharePoint Designer werkstromen integreren in webservices

I been playing rond met aangepaste acties voor SharePoint Designer voor enige tijd (Zie hier voor sommige gedetailleerde stuff, Als dat u interesseert).

In mijn huidige project, We moeten sommige vrij zware werk doen en we willen declaratieve EPD werkstroom gebruiken om de bijbehorende business-proces te beheren.

Lang verhaal kort, Dit is heel goed mogelijk. Ik uitgebreid mijn Codeplex project voor het aanroepen van een "helper-service" en nu we een webservice vanuit een EPD workflow kunt aanroepen.

Hier is de handtekening:

 openbare tekenreeks Dispatcher(
        GUID WebID, // Doorgegeven door de runtime environment
        GUID SiteID, // Doorgegeven door de runtime environment
        tekenreeks ListID, // Doorgegeven door de RTE (weet niet waarom dit een tekenreeks is, niet een GUID)
        int ListItemID, // Doorgegeven door de RTE.
        tekenreeks XmlMessage) // Doorgegeven door de gebruiker, zoals verklaard in SPD.

Dit maakt gebruik van het feit dat we op belangrijke workflowgegevens krijgen kunnen, Als de site, lijst-ID, etc. Dit is goed gedocumenteerd op verschillende plaatsen voor degenen onder u geïnteresseerd in het maken van uw eigen aangepaste acties. Het idee is om de XML-tekenreeks die door de gebruiker aan de verzending van een passende procedure-extract. Fun stuff!

Helaas, Dit is uiteraard een one-way ticket naar beneden naar "Loosey Goosey" Anti-patroon land, maar het is beter dan tegen een bakstenen muur te slaan 🙂

Is het een Antipatroon als je het doet, ook al weet je dat het is een Antipatroon?

Ik hoop dat ik wikkel deze in de nabije toekomst binnen Codeplex. Bent u geinteresseerd in me doen, Geef me zak (E-mail of een reactie achterlaten) en ik zal er zo enthousiast over zijn 🙂

</einde>

Abonneren op mijn blog.

Technorati Tags: ,

Zondag grappig: “Ik vraag me af als uw wachtwoord is …”

Ik kocht onlangs lunch voor mijn broer (zoals gebruikelijk) en we eindigde praten over grappige dingen die we in onze respectieve hogescholen deden. Op mijn alma mater, Lafayette College, de universitaire ondersteuning IT-afdeling had een zeer inclusieve manier over het. We kregen een HELEBOEL touw en ik nam voordeel van die soms.

Twee van mijn favoriete herinneringen betrekking op mijn goede vriend hebben, Gabe. Hij had de verschrikkelijke fout van het vertellen mensen zijn eerstejaars jaar dat "ik een eerstejaars ben gemaakt, maar ik heb tweedejaars staande" Als gevolg van de verschillende klassen van geavanceerde plaatsing had hij genomen, etc. Velen van ons waren ook gelegen maar we niet praten over het zo veel. Zijn laatste jaar, Wanneer we hem voorstelde aan mensen, Wij zouden zeggen "Dit is Gabe. Hij is een Senior, maar hij heeft tweedejaars staande ".

Het college had sommige Sun werkstation/servers met X-Window. Ze hadden gigantische monitoren en de ingenieurs gebruikt ze voor CAD- en andere saaie ingenieur spul. We CS mensen gebruikten hen om te leren programmeren en, Natuurlijk, om te spelen.

We niet graag de computer-hulpeloos ingenieurs te veel dus een van onze favoriete dingen om te doen zou Telnet naar het vak zij stonden op en uitvoeren X-oog op hen. Dit zou knal opwaarts een paar ogen die de muis rond op het scherm volgde. Je kon zelfs meer opduiken en hebben letterlijk een dozijn of meer van de X-eye-toepassingen die worden uitgevoerd. Probeer niet hardop te lachen wanneer een ongelukkige ingenieur X-eye na X-eye probeert te sluiten en er zachtjes over mompelt 🙂

We speelden ook X-trek op die dozen. Om dat te doen, u moest de source downloaden, verschillende afhankelijkheden krijgen waar u kan terugvinden en bouwen. Ik was niet een geavanceerde C-programmeur, maar ik kon lezen headerbestanden. Ik was op zoek via deze en vond richtlijnen zoals "#DEFINE MAX_TORPEDO_DISTANCE 10". Ik heb gespeeld rond met waardoor bereik en macht voor fasen en torpedo 's, het opnieuw gebouwd en vervolgens vernietigd Gabe de volgende keer dat we speelden.

Gabe was ook een enorme fan van een TV-show genaamd Blake's 7. Ik had nooit gezien, maar dat niet me weerhouden aan te dringen dat Dr. Wie is de superieure show. De argumenten zouden soms verhit raken 🙂

Een dag, het kwam bij me op dat ik waarschijnlijk wel zijn UNIX-wachtwoord raden kan. Ik ging zitten naast hem op een dag en aangekondigd in een luide Toon, "I 'm going te raden uw wachtwoord nu, Gabe." "Ja, recht" zijn antwoord was. Ik dan ingelogd, ingevoerd zijn gebruikers-id, draaide zich om hem gezicht, getypt en zei hardop, "Ik ben benieuwd of het B-L-A-K-E-7" ? Typen heeft nooit vruchten afgeworpen zo fraai zoals zij heeft gedaan die dag.

Volgende week (of snel): Meer computer kamer capriolen van college.

Hebt u een om te delen? Verlaat een commentaar of e-mail me en ik zal publiceren ze hier.

</einde>

Abonneren op mijn blog.

Technorati Tags:

Kleine openbare aankondiging: Windows Live beveiligingsinstellingen en contacteren ruimte eigenaars

Ik heb ontvangen een handvol berichten van personen via de ingebouwde "Stuur een bericht" functie Microsoft biedt live spaces (die ook host is voor mijn blog) elke maand.

Ongeveer een derde van de tijd, deze gebruikers hebben beveiligd hun live Spaces-account zodat ik kan niet antwoorden. Dit is een soort van anti-spam functie ik neem aan dat.

</einde>

Eenvoudige uitleg: “De waarde valt niet binnen het verwachte bereik.”

UPDATE: Een anonieme poster liet grote commentaar over interne namen. Zorg ervoor dat om het te lezen.

Bij het werken met gebeurtenis ontvangers en andere code die verwijst naar de SharePoint-lijstitems via het objectmodel, Ik maken vaak fouten dat deze fout tijdens runtime te genereren:

Fout laden en event receiver Conchango.xyzzyEventReceiver uitgevoerd in xyzzy, Versie = 1.0.0.0, Cultuur = neutraal, PublicKeyToken = 0dc50a750396c3ac. Aanvullende informatie is hieronder. : De waarde valt niet binnen het verwachte bereik.

Ik denk dat dit is een vrij algemene fout die potentieel veel verschillende manieren wordt veroorzaakt. Echter, een simpele uitleg is dat ik een veld onjuist referencement ben. Als de naam van het veld "Vervaldatum", Ik moet verwijzen naar het als dit in een event receiver:

Eigenschappen.ListItem["Vervaldatum"]

Als ik verkeerd spelt of de verkeerde gebruiksvoorbeeld wanneer wordt verwezen naar het veld, SharePoint genereert de hierboven genoemde runtime-fout. Bijvoorbeeld, Dit is verkeerd:

Eigenschappen.ListItem["vervaldatum"]

</einde>

Abonneren op mijn blog.

Technorati Tags:

Eindgebruiker Quick Tip: Soort weergaven in een documentbibliotheek, Lijst, etc.

We kunnen, moet en vele weergaven in SharePoint-lijsten maken (documentbibliotheken, aangepaste lijsten, etc). SharePoint-lijsten altijd beschikbare weergaven in alfabetische volgorde. We kunnen dit niet veranderen met behulp van de functionaliteit voor bestandsdialoogvensters die. Als het kan worden gedaan via aanpassing (en ik ben niet zeker dat het kan), het is veel te technisch voor uw typische eindgebruiker.

Als u wilt bepalen van de volgorde in welke SharePoint lijsten beschikbare weergaven, Voeg gewoon een nummer of een brief aan de naam van de weergave, Als in:

1 – Door materiële Type
2 – Alle documenten
3 – Vervaldatum

-of-

A – Door materiële Type
B – Alle documenten
C – Vervaldatum

Ik heb ook weergaven waarvan het doel strikt is te voeden een KPI. Ik heb gevolgd deze naamgevingsconventie:

Z_KPI_[Beschrijving]

Die ervoor zorgt dat mijn "KPI" weergaven verschijnen aan de onderkant van de lijst.

</einde>

Abonneren op mijn blog.

Technorati Tags: ,

Zondag grappig: “Toen ik een kleine jongen”

Als een ouder, ergens langs de lijn die ik ontdekte de "toen ik een kleine jongen" truc.

Mijn zoon, waarschijnlijk vier of vijf op het moment, speelde een ballon en als meest kleine jongens die met ballonnen spelen, Hij schoot het. Hij was erg overstuur. De wereld was gekomen om een einde. Ik zei tegen hem, "toen ik kleine jongen, Ik had een ballon en op popped en uiteindelijk, Ik heb een nieuwe ballon." Het leek te helpen hem omgaan met zijn verlies en leidde tot een leuke praten over hoe het was toen ik een kleine jongen.

Dat werkte goed als een troost techniek en ik het een meerdere malen over de volgende periode van tijd gebruikte. Ik kreeg in de problemen eens wanneer zijn Monster Rancher 3 schepsel stierf. Ik sprak over hoe mijn hond, Prins, was overleden bij een auto-ongeluk. Deze keer, zijn antwoord was, "Nu ik voel me slecht over twee dingen!" Ik weggelopen met behulp van de "toen ik een kleine jongen" techniek voor troost na die.

Vóór het incident dode hond, echter, Ik was ook begonnen met de techniek te overtuigen hem om te doen klusjes. "Toen ik een kleine jongen, Ik had uit te gaan en krijgen de krant", "mijn kamer schoon", "get mama haar koffiekopje", etc.

Dit was ook vrij succesvol voor een tijdje, maar hij begon steeds opstand tegen de tirannie van mijn kindertijd. Een gebeurtenis, in het bijzonder, betekende het einde. Ik vertelde hem om de vuilnisbakken van curb terug naar de garage. Hij voerde aan, en ik heb gereageerd, "Toen ik een kleine jongen, Ik moest het afval terug te nemen naar de garage." Hij reageerde, "Oh ja! Goed toen je nog een kleine jongen, dat was dom!".

</einde>

Abonneren op mijn blog.

Technorati Tags:

Weergaven en kolommen in lijsten en documentbibliotheken kunnen niet worden beveiligd

UPDATE (02/29/08): Dit nieuwe codeplex project lijkt te bieden een methode voor het beveiligen van afzonderlijke kolommen: http://www.codeplex.com/SPListDisplaySetting. Hebt u enige ervaring met het werken, laat alstublieft een reactie.

Forum posters heeft vaak een vraag als deze: "Ik heb een manager weergave en en een personeel weergave van een lijst. Hoe beveilig ik de manager weergave zodat personeel kan niet het gebruiken?"

Zij stellen ook vaak een verwante vraag: "Ik wil een specifieke metagegevens kolom beveiligen zodat alleen beheerders die kolom bewerken kunnen terwijl anderen kunnen niet zelfs zien."

Deze antwoorden van toepassing op beide WSS 3.0 en MOSS:

  • SharePoint biedt geen out-of-the-box ondersteuning voor het beveiligen van weergaven.
  • SharePoint biedt geen out-of-the-box ondersteuning voor beveiliging kolommen.

Er zijn verschillende technieken een kunnen volgen om te voldoen aan deze soorten beveiligingsvereisten. Hier is wat ik kan bedenken:

  • Beveiliging op itemniveau voor out-of-the-box gebruiken. Weergaven eren altijd item niveau Beveiligingsconfiguratie. Gebeurtenis ontvangers en/of werkstroom kunt automatiseren beveiligingsinstellingen toewijzing.
  • Persoonlijke weergaven gebruiken voor "bevoorrechte" Weergaven. Deze zijn gemakkelijk genoeg om in te stellen. Echter, in verband met hun "persoonlijke" natuur, Deze moeten worden geconfigureerd voor elke gebruiker. Gebruik standaard beveiligingsconfiguratie om te voorkomen dat iemand anders een persoonlijke weergave maken.
  • Een webonderdeel voor gegevensweergave gebruiken en uit te voeren een soort AJAXy beveiligingsoplossing trimmen.
  • Uw eigen lijst weergave functionaliteit roll en nemen veiligheid trimmen op kolomniveau.
  • Wijzigen van de formulieren voor gegevensinvoer en JavaScript gebruiken in combinatie met het beveiligingsmodel te implementeren van beveiliging op gebruikersniveau kolom trimmen.
  • Een InfoPath-formulier voor gegevensinvoer gebruiken. Implementeren van beveiliging op gebruikersniveau kolom trimmen via web serviceoproepen aan SharePoint en voorwaardelijk Verberg velden zo nodig.
  • Uw eigen ASP.net-gegevens ingang functie waarmee kolom beveiliging trimmen roll.

Geen van deze opties zijn echt dat geweldig, maar er is ten minste een pad te volgen als u wilt, zelfs als het is moeilijk.

OPMERKING: Als je naar beneden een van deze paden, Vergeet niet over "acties-> Openen met Windows Verkenner". U wilt er zeker van dat u met die functie test om ervoor te zorgen dat het niet als een "achterdeur werkt" en uw veiligheid regeling te verslaan.

Hebt u andere ideeën voor of ervaringen met kolommen of weergaven beveiligen, Gelieve e-mail me of een reactie achterlaten en ik zal updaten dit bericht zo nodig.

</einde>

Abonneren op mijn blog.

Technorati Tags:

Quick Tip: BDC ADF versienummers niet gelijk zijn uw vriend

Als u bent hand-codering ADF bestanden en doen een heleboel code/importeren/testcycli, Gebruik het versienummer uw leven gemakkelijker te maken.

Ik haat om het toe te, maar tot deze week, Ik was altijd de ADF verwijderen en opnieuw importeren. Dit zou breken mijn kolommen met zakelijke gegevens en maakt me opnieuw draad hen. Alle overbodige.

Dien dit onder "het is duidelijk zodra je zien".

Voorbeeld:

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

Die versie en Reimport wijzigen en de bestaande kolom voor zakelijke gegevens gebruikt automatisch de bijgewerkte versie met geen aanvullende configuratie vereist.

</einde>

Abonneren op mijn blog.

Technorati Tags:

Oplossing: BDC Picker toont slechts één kolom van resultaten

In mijn pogingen gaande op het verstrekken van een nuttiger opzoekkolom met behulp van BDC, Ik raakte een muur met de BDC picker. Als u nog niet zien, de BDC picker is vergelijkbaar met een datumkiezer mensen behalve dat het werkt met kolommen van het type "zakelijke gegevens".

U toegang tot de picker door te klikken op het pictogram van de open boek van een kolom voor zakelijke gegevens zoals:

afbeelding

De bovenstaande afbeelding toont een kolom voor zakelijke gegevens genaamd "Master Document-Id". Die kolom is aangesloten, via BDC, bij een webservice. De webservice retourneert twee kolommen met gegevens: Document-ID en titel. De zakelijk doel hier is bedoeld als een "dit document is gebaseerd op" functie. Gebruikers selecteren een "master" document en wanneer ze opslaat, de ontvanger van een gebeurtenis opgehaald meta gegevensvelden uit het model waarnaar wordt verwezen.

Standaard, de BDC datumkiezer eruitziet als dit wanneer ik naar een document waarvan de ID zoeken = "38":

clip_image002

Dat is nuttig, maar niet goed genoeg. Mensen denken niet in termen van id 's, zij denken in termen van titels en/of andere metagegevens. De Kleurkiezer kunt u zoeken op andere kolommen (bijvoorbeeld. Titel) maar de feitelijke lijst met titels bleek niet weergegeven, gewoon hun arts is zoals hier wordt weergegeven:

clip_image002[1]

(Het het schermschot is niet zo groot, omdat ik niet kies een zoekopdracht die elke geldige resultaten retourneert, maar je kunt zien dat als het had sommige resultaten gevonden, het zou alleen hebben aangetoond van de arts, niet titels).

Ik zocht hoog en laag naar het antwoord op dit en is mislukt. Mijn collega, de eerbiedwaardige Jonathan Bradshaw, had geconfronteerd en dit probleem opgelost. Wanneer ik stak hem voor hulp, Hij wees me in de goede richting.

Configureren van de datumkiezer om aan te tonen van meerdere kolommen via de ShowInPicker"" onroerend goed in de automatische Documentinvoer:

<Eigenschap Naam="ShowInPicker" Type="System.Boolean">True</Eigenschap>

Meer in detail:

  <!-- Titel -->
  <TypeDescriptor TypeName="System.String" Naam="Titel" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Titel</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Eigenschappen>
      <Eigenschap Naam="DisplayByDefault" Type="System.Boolean">True</Eigenschap>
      <Eigenschap Naam="ShowInPicker" Type="System.Boolean">True</Eigenschap>
    </Eigenschappen>
  </TypeDescriptor>

Deze eigenschap voeren een klein probleem. Zodra u het één keer instellen, u moet voor elke kolom die u wilt weergeven. In mijn geval, BDC picker arts toonde standaard. Echter, Zodra ik heb toegevoegd "ShowInPicker" titel, Arts niet langer weergegeven. Ik dat opgelost door expliciet de eigenschap van de ShowInPicker ingesteld voor Doc-ID.

Hier is het resultaat:

afbeelding

(Ik zal uitleggen de vreemd "168 – CamlSchema.xsd" bouw in een toekomstig blogpost. In het kort, het is een aaneengeschakelde tekenreeks die voorziet in een iets betere user experience).

Natuurlijk, deze blog entry hebben geschreven, Ik heb een zoekopdracht voor "ShowInPicker" en vond vele hits, met inbegrip van dit: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Het verklaart de betekenis van die eigenschap samen met enkele andere goede dingen van de BDC.

</einde>

Abonneren op mijn blog!

Technorati Tags: