现在的位置: 首页 > 综合 > 正文

SharePoint Web Part development met C# – deel 1(转:web部件制作)

2012年09月28日 ⁄ 综合 ⁄ 共 9168字 ⁄ 字号 评论关闭
文章目录
http://www.sdgn.nl/Default.asp?A1PID=57PDGUH&A1SID=229854200434&URL=154106PDWL

Inleiding Web Part development

Met Microsoft SharePoint Portal Server kun je portal-oplossingen ontwikkelen waarin kennis en expertise uit verschillende bronnen gebundeld aan gebruikers kunnen worden aangeboden. SharePoint biedt een krachtige zoekmachine en document management mogelijkheden.

Het scherm van een SharePoint pagina is opgebouwd uit verschillende onderdelen, die Web Parts worden genoemd. Omdat SharePoint Portal Server gebruik maakt van .NET technologie kunnen deze Web Parts in C# ontwikkeld worden.

Dit is het eerste deel in een serie artikelen over SharePoint Web Part development. In dit artikel bouwen we met behulp van een Web Part template ons eigen Web Part. Dit Web Part zal de account-name tonen van de ingelogde user. Dat is voor ontwikkelaars handig om standaard op de home page van de portal te tonen, o.a. omdat een ontwikkelaar regelmatig onder verschillende accounts aan zal moeten loggen om zijn Web Parts te testen. In het volgende artikel zal de functionaliteit van het Web Part worden uitgebreid.

Fig. 1: UserName Web Part

Web Part templates

Een Web Part bestaat uit een aantal onderdelen. Met behulp van Web Part templates zijn deze eenvoudig aan te maken. De Web Part templates kun je downloaden vanaf de Microsoft site. Deze Web Part templates werken voor .NET 2002 en 2003. Bij het installeren krijg je de mogelijkheid om te kiezen voor C# of VB.NET.  Wanneer je alleen ontwikkelt in C#, is het installeren van de C# templates voldoende.

Web Part project aanmaken

Wanneer je de Web Part templates hebt geïnstalleerd, kun je een Web Part project aanmaken in de .NET Development Environment. Maak een nieuw project aan, en kies voor een C# Web Part Library.

Als je geen gebruik maakt van de Web Part templates, kun je de verschillende onderdelen van een Web Part project met de hand aanmaken. Zet dan zelf een referentie naar de Microsoft.SharePoint assembly.

Fig. 2: Nieuw Web Part Library project

Een Web Part project bestaat uit de volgende onderdelen:

·          Web Part class (Web Part1.cs); deze bevat de code van het Web Part

·          Web Part definitie file (Web Part1.dwp); het .dwp bestand bevat de definitie van het Web Part, en is vergelijkbaar met de .dwp files uit SharePoint 2001

·          manifest (Manifest.XML); het manifest bevat de informatie die nodig is om het Web Part succesvol te kunnen deployen

·          assembly informatie (AssemblyInfo.cs)

In het Web Part project is bovendien een referentie aangemaakt naar de Microsoft.SharePoint assembly. In de volgende paragrafen zullen we in detail kijken naar de onderdelen van het Web Part project, en deze aanpassen voor ons UserName Web Part.

Fig. 3: Onderdelen Web Part Template project

WebpartUser.cs

De Web Part class bevat de code van het Web Part. Een Web Part class is gebaseerd op de WebPart class uit de Microsoft.SharePoint.WebPartPages namespace. Dit wordt geregeld door te erven van Microsoft.SharePoint.WebPartPages.WebPart. In de code worden attributen gezet op class-nivo en op property-nivo. Deze attributen bepalen het gedrag van het Web Part.

We openen WebPart1.cs en veranderen de naam van de class en de bestandsnaam in WebPartUser. Op class-nivo kunnen we instellen wat de default property is van de WebPart class. Standaard worden Web Parts uitgerust met één property: “Text”.

Fig. 4: Web Part Class attributes

Het toevoegen van extra Web Part properties werkt hetzelfde als het toevoegen van properties aan ‘normale’ C# classes. We passen de standaardwaarde van de property Text aan.

Met het attribute Browsable geven we aan dat de property via het web interface in de portal aangepast kan worden.

De Category waarin deze eigenschap in het task pane getoond zal worden is “Miscellaneous”. Wanneer je meerdere eigenschappen aan een Web Part hebt toegevoegd, kun je ervoor kiezen een eigen categorie toe te voegen door hier een andere naam in te vullen.

De Web Part Storage eigenschap bepaalt hoe de Web Part eigenschappen worden opgeslagen in de SharePoint database. De standaard waarde Personal betekent dat de waarde voor elke gebruiker wordt opgeslagen. Als je de waarde op Shared zet, wordt de property voor alle gebruikers opgeslagen. Wanneer je de Storage eigenschap op None zet, wordt de standaard waarde gebruikt en wordt de waarde van de eigenschap niet in de SharePoint database opgeslagen, maar wordt de standaard waarde in het Web Part getoond.

Fig. 5: Aangepaste code Web Part property “Text”

Fig. 6: Web Part properties aanpassen in de portal

Web Parts zijn bijzondere .NET Custom Controls. Dat betekent dat er geen grafische interface is waarmee je je Web Part kunt aanpassen. (Je kunt geen knoppen op je Web Part slepen.) In plaats daarvan bouw je je Web Part op in de RenderWeb Part method, die je kunt vergelijken met de Render method van een Custom Control.

Standaard staat in de RenderWeb Part method code die ervoor zorgt dat de Text property van het Web Part getoond wordt. Deze code vervangen we door code om de naam van de CurrentUser te tonen. Hiervoor gebruiken we het Context object.

Fig. 7: Aangepaste code Web Part method “RenderWebPart”

Tip:

Het Context object kun je gebruiken om informatie op te vragen over de context van het Web Part: de current user en de site waarin het Web Part is geplaatst.

Voorbeeld:

  Using Microsoft.SharePoint.WebControls

  SPWeb myWeb = SPControl.GetContextWeb(Context);

  string UserName = myWeb.CurrentUser.LoginName;

  myWeb is de SharePoint site waarop het Web Part is geplaatst.

WebPartUser.dwp

Bij elk Web Part hoort een .dwp bestand, waarin de Web Part eigenschappen staan ingesteld: Titel, Description, Assembly en TypeName. De Title en Description worden getoond wanneer gebruikers het Web Part in de portal plaatsen. De Description verschijnt als tooltip.
Het is belangrijk dat de Assembly en TypeName correct zijn ingevuld, omdat deze aangeven welke class de functionaliteit van het Web Part bevat. We veranderen de bestandsnaam in  WebPartUser.dwp, en de TypeName in WebPartUser, zodat deze overeenkomt met de naam van de Web Part class.

Web Part eigenschappen kunnen ook in de Web Part definitie file worden vastgelegd. Wanneer we ons Web Part bijvoorbeeld standaard 20 pixels hoog willen maken voegen we de volgende tag toe: <Height>20px</Height>

Een Web Part zonder frame tonen kan als volgt: <FrameType>None</FrameType>

Fig. 8: Aangepaste code Web Part method “RenderWebPart”

Tip:

Wanneer je een overzicht wilt hebben van de Web Part eigenschappen die je via de Web Part definitie kunt vastleggen, kun je de pagina waarop het Web Part is geplaatst in Microsoft FrontPage 2003 openen. Elk Web Part wordt in de broncode van de pagina als XML getoond.

Tip:

De foutmelding “A Web Part or Web Form Control on this Web Part Page cannot be displayed or imported, because it is not registered on this site as safe” treedt op wanneer het dwp bestand onjuist is aangepast. De Typename moet kloppen!

Manifest.xml

In het manifest staat alle informatie die nodig is om het Web Part op de server te installeren. We passen de naam van het dwp file aan.

Fig. 9: Web Part manifest

Wanneer je Web Part gebruik maakt van bestanden die opgeleverd moeten worden met het Web Part, zet je in het manifest ook verwijzingen naar deze bestanden. Deze verwijzingen staan in de ClassResources tag. Wij verwijderen de ClassResources tag, omdat we voor ons Web Part geen andere bestanden nodig hebben.

Tip:

In het Manifest geef je ook aan welke resources (bestanden) met het Web Part opgeleverd moeten worden. Standaard staat deze XML tag nog niet uitgecommentarieerd.

Wanneer je de foutmelding “Can’t find this file specified in the file manifest.xml“ krijgt, moet je de lege ClassResources tag uit het Manifest verwijderen.

Assembly information

Voordat de Web Part code op de server kan worden uitgevoerd, moet het Web Part als safe control geregistreerd zijn op de server. Hiervoor moeten we het voorzien van een strong name. Met de Strong Name tool (sn.exe) maken we een keyfile aan, die we aan het project toevoegen. De enige aanpassing die we hoeven te doen aan de assembly information is het verwijzen naar de keyfile.

Bijvoorbeeld: [assembly: AssemblyKeyFile("..\\..\\SDGN.snk")]

Web Part opleveren op de server

Web Parts worden deployed in Web Part packs: CAB files die je met behulp van een Setup project kunt maken. Deze Web Part packs kunnen op de SharePoint server worden geregistreerd met de tool stsadm.exe.

Om het Web Part op te leveren voegen we eerst een Setup project toe aan de Web Part Solution. Aan deze CAB file voegen we toe: de primary output van het Web Part project, het manifest en de Web Part definitie file. (Wanneer je in de ClassResources tag van het manifest bestandsnamen hebt ingevuld, moet je deze ook aan de CAB file toevoegen.)

Fig. 10: Setup project

Met de tool Stsadm.exe registreren we de CAB file op de server. Wanneer je gebruik maakt deze tool wordt het Web Part automatisch aan de SafeControls verzameling toegevoegd in web.config. Om alle code in het webpart uit te kunnen voeren, wijzigen we het trust-level in web.config  Het trus-tlevel dat nodig is voor het uitlezen van de ingelogde user is WSS_Medium (<trust level="WSS_Medium" originUrl="" />).

Wanneer je in je Web Part alleen HTML genereert, kun je het trust-level op WSS_Minimal laten staan.

Let op: in de productieomgeving zal het niet wenselijk zijn om het trust-level te verruimen. Dan zal gebruik gemaakt worden van “Custom trust levels”, en wordt precies vastgelegd welke acties Web Parts op de server uit mogen voeren.

We kunnen het Web Part nu registreren met stsadm. De tool stsadm staat in de folder <Root>:\Program Files\Common Files\Microsoft Shared\Web server extensions\60\bin. Het registreren van het Web Part kan met stsadm –o addwppack –f  cabName  (zie figuur 11).

Wanneer een Web Part geregistreerd is, kan het na wijzigingen met de force parameter opnieuw geregistreerd worden. Met de operation deletewppack kunnen Web Parts van de server verwijderd worden.

Fig. 11: Web Part deployment m.b.v. stsadm

Fig. 12: Web Part van de server verwijderen

Conclusie

In dit artikel hebben we een Web Part ontwikkeld met behulp van een Web Part template.

We hebben de eigenschappen van dit Web Part aangepast in code en met behulp van het Web Part definition bestand. We hebben code toegevoegd aan de RenderWebPart method, en het Web Part op de server geregistreerd met de tool stsadm. In de volgende artikelen over Web Part development zullen we ons Web Part project uitbreiden met nieuwe Web Parts met meer functionaliteit. Zoals Web Parts met controls en connected Web Parts (Web Parts die samenwerken met andere Web Parts op de pagina).

抱歉!评论已关闭.