Wednesday, June 6, 2007

SharePoint List Extension

Na de Macaw extension in grote lijnen te proberen begrijpen, heb ik een poging gedaan om het geheel te laten werken. Het enige dat maar niet wil werken, is het toepassen van een query op de SharePoint List. Zoals te zien in onderstaande screenshots krijg ik de volgende error: There is an error in the query. Object reference not set to an instance of an object.




Op Teun.ToString() website zijn er vele andere mensen die hiermee problemen hebben. Als iemand een oplossing weet, laat het me weten! ;)



Pass parameters to InfoPath Form

In some cases it might be handy to pass some parameters to the InfoPath form. Example: It would be nice if users don't have to complete their account data (Name, Surname, E-mailadress,...). In this case you have a few options:

  1. Access SharePoint webservices to retreive the data (UserProfile.asmx)
  2. Write some code behind the InfoPath Form (as exposed below)
  3. By using Contact Selector ActiveX control

InfoPath codebehind method:

In the Loading event of the form template, we have to catch the parameters with the TryGetValue method.

public void FormEvents_Loading(object sender, LoadingEventArgs e)
{
string Naam = string.Empty;
try
{
e.InputParameters.TryGetValue("naampje", out Naam);
}
catch (Exception ex)
{
Naam = ex.Message.ToString();
}

finally
{
MainDataSource.CreateNavigator().SelectSingleNode
("/my:myFields/my:voornaam", NamespaceManager).SetValue(Naam);
}
}


Afterwards, you can pass a parameter through the URL. Add a querystring at the back of the URL eg. &naampje=kieseennaam

Monday, June 4, 2007

Calculated Columns (Part 2)

Het is wel degelijk mogelijk om een calculated column als site column te definiëren. Mijn fout zat in het verwijzen naar het StartDate field. Eerst moet men een field StartDate (site column met als type DateTime) aanmaken en daarna hiernaar verwijzen (fieldref) in de calculated column feature.

De oplossing vindt je op Jopx terug.

Sunday, June 3, 2007

Thank message after a submitted InfoPath Form

It's possible to let appear a 'Thank you' message to the person who submitted the InfoPath Form. You can do this by working with Views in InfoPath. On the first view (the main form) we place a button with the following rules: Submit using a dataconnection & Switch new view. With these rules we tell InfoPath to store the new form in a form library and after that it must switch to another view (the second form). The next thing we need to do is creating the message on the new view. That's all!

Tuesday, May 29, 2007

Content type definiëren op SPWeb niveau

Als men een content type definieert in een feature en daarna deze feature gaat deployen, dan zal het content type gedefinieerd worden op SiteCollection niveau. Het is echter mogelijk een content type te definiëren op SPWeb niveau via de UI. Nu vragen we ons af of het mogelijk is een content type feature te deployen op SPWebniveau...


Poging 1:
Scope van de feature op Web geplaatst.
Bij het installeren van de feature krijgt men dan een geweldige error: Elements of type 'ContentType' are not supported at the 'Web' Scope. This feature could not be installed

Een hopeloze poging 2:
gebruik maken van het Object Model.

//Id van het contenttype feature; site = SPWeb object
System.Guid guid = new System.Guid("56615608-9e3d-4ff6-b2c6-90e070e45ff1");
site.Features.Add(guid);

Deze poging was vanzelfsprekend dat dit niet ging werken omdat het eerst nodig is de feature te installeren (Dit is onmogelijk op Webniveau).
error: Feature '56615608-9e3d-4ff6-b2c6-90e070e45ff1' is Site-scoped, and can not be added to the Web.

Op deze pagina kan men alvast zien dat het element type content type behoord tot de scope 'Site'

Poging 3:
Een mogelijke Workaround:

Maak een content type aan via het Sharepoint Object Model en prop deze code in een Feature_Activated methode. Bij het installeren van de feature zal er een content type aangemaakt worden op SPWebniveau en niet op SiteCollection niveau.

Dit is een mogelijke oplossing :) Hoewel ik denk dat dit de enige oplossing is.

Wednesday, May 23, 2007

Enesys Rs Data Extension

Ik probeer een rapport samen te stellen van data afkomstig uit een List en deze daarna te gebruiken/ weergeven binnen SharePoint. Om toegang te krijgen tot data uit een List kunnen we de Enesys RS Data Extension gebruiken...

Enesys Data Extension Reporting Services is a data extension for Microsoft SQL Reporting Services that makes it possible to create reports using data in SharePoint lists.

Een eenvoudig rapportje maken is ondertussen al gelukt. Nu zou ik alleen willen dat dit wordt weergegeven in een ReportViewerWebpart. Dit lijkt absoluut geen gemakkelijke opdracht want hiervoor is het noodzakelijk dat er een Report Server & een Reporting Service Add-in wordt geïnstalleerd. De Add-in zorgde voor weinig problemen. De Report Server configureren daarentegen, liep niet van een leie dakje. Wat er ontbrak ... SQL server 2005 Service pack 2: deze voorziet integratie met SharePoint. Ook het starten van de Report Server Windows Service bleek een probleem. Deze Service staat bij het opstarten op "disabled" en moet dus bij Administration Tools > services aangezet worden.

Nu alles opgezet is , kunnen we het rapportje deployen naar de server. Daarna kunnen we het RDL bestand weergeven in de ReportViewerWebpart. Dit blijkt nog niet te werken...

An error has occurred during report processing.Cannot create a
connection to data source 'MOSS'.Request for the permission of type
'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Tuesday, May 22, 2007

Calculated Columns

Bij deze opdracht mocht ik uitzoeken of het mogelijk was om een site column van het type 'Calculated' te creëren. Formule die we gaan gebruiken: DeadLine = StartDate + 7 .

Wat ik ondertussen al te weten ben gekomen:
Het is mogelijk om een calculated field toe te voegen aan de schema.xml van een list definition. Na het installeren/activeren van de List Feature & aanmaken van een nieuw custom list definition zal men zien dat er een extra column van het type calculated (=DeadLine) wordt toegevoegd. Het enige wat we nog moeten doen is een column 'StartDate' aanmaken via de UI (men zou dit ook via schema.xml kunnen doen). Maak nu een nieuw item aan en men zal zien dat de column DeadLine een datum weergeeft die 7 dagen later is dan de waarde van StartDate.


Het eigenaardige is dat het op het eerste zicht niet wil lukken als men de calculated column als een site column definieert... Spooky!