November 21, 2008

A new version of SharePoint List Access Layer Generator is available

This second version of the project is always a beta, so be careful when using it.

You can find the solution on CodePlex:

November 18, 2008

SharePoint 2007: Creating SharePoint Applications with Visual Studio 2008 (webcast from PDC 2008)

Here is an interesting webcast about how to build a SharePoint application using the Visual Studio 2008 extensions for SharePoint:

Do Less. Get More. Develop on SharePoint

A colleague sent me an interesting Microsoft link for SharePoint developers. It provides all you need to know to build powerful SharePoint solutions.

Here is the link:

November 17, 2008

CAML query on lookup columns

Let's imagine two SharePoint lists:

- Products
- Categories

In this scenario, the Products list contains a lookup column called Category pointing on the Categories list.

Now, I want to write a CAML query to get all the products list items related to the Hardware category.

The first thing coming into my mind is the following piece of code:

private SPListItemCollection GetProductsByCategory(SPFieldLookupValue Category)
    SPList listProducts = this._web.Lists["Products"];
    SPQuery camlQuery = new SPQuery();
    camlQuery.Query = string.Format("<Where><Eq><FieldRef Name=\"Category\" /><Value Type=\"Lookup\">{0}</Value></Eq></Where>", Category.LookupValue);
    return listProducts.GetItems(camlQuery);

The problem with this query appears if some categories have the same name (Hardware). It's due to the fact that the query doesn't use the ID of the category but the Name. So, you will get all the products related to all the categories having Hardware as name.

To solve that and get only the products related to the wanted category, you have to rewrite the query in setting the LookupId property of the FieldRef node to true and in using the LookupId property as value and not the LookupValue property:

private SPListItemCollection GetProductsByCategory(SPFieldLookupValue Category)
    SPList listProducts = this._web.Lists["Products"];
    SPQuery camlQuery = new SPQuery();
    camlQuery.Query = string.Format("<Where><Eq><FieldRef Name=\"Category\" LookupId=\"TRUE\" /><Value Type=\"Lookup\">{0}</Value></Eq></Where>", Category.LookupId);
    return listProducts.GetItems(camlQuery);

November 14, 2008

MSDN Event: Extending Microsoft Office and SharePoint to build Business Applications - 19/11/2008


If your users like the comfort of using the Office suite and you would like to offer them new tools in a familiar environment: Office Business Applications (OBA) is the solution. During this session you will get a good overview of the possibilities to extend Office as well as interaction between the different products of the suite. We will also focus on the integration with SharePoint. To demonstrate this we will create a security management tool for SharePoint through an Excel document. Another point that will be shown is the development of add-ins, including the different options for deploying these.


This year again we will have an English session in the morning and a French session in the afternoon. Below you will find two registration links, one for the English session and the other for the French session.

Registration for the English Session

Audience: Developer

Level: 300 - Advanced

Language: English
Speaker: Katrien De Graeve, Developer Evangelist, Microsoft Belgium & Luxembourg
Date: November 19th
Time: 09.00 – 12.30

Registration for the French Session (

Audience: Développeur

Level: 300 - Avancés

Language: Français
Speaker: Didier Danse
Date: 19 Novembre
Time: 13.00 – 16.30

Event Address

Technoport Schlassgoart 66, rue de Luxembourg

B.P. 144 Esch-sur-Alzette

SharePoint Guidance (patterns & practices) release

Summary from MSDN:

"This guidance helps architects and developers design, build, test, deploy and upgrade SharePoint intranet applications. A reference implementation that is named the Contoso Training Management application demonstrates solutions to common architectural, development, and application lifecycle management challenges.

This guidance discusses the following:
  • Architectural decisions about patterns, feature factoring, and packaging.
  • Design tradeoffs for common decisions many developers encounter, such as when to use SharePoint lists or a database to store information.
  • Implementation examples that are demonstrated in the Training Management application and in the QuickStarts.
  • How to design for testability, create unit tests, and run continuous integration.
  • How to set up different environments including the development, build, test, staging, and production environments.
  • How to manage the application life cycle through development, test, deployment, and upgrading.
  • Team-based intranet application development.

The following areas are not discussed in the current version of this guidance:

  • Content-oriented sites that use Web content management
  • Internet and enterprise-scale SharePoint applications
  • Multilingual SharePoint applications
  • Scale or security testing of SharePoint applications "
You can find the MSDN link and the download link here:

Another project which seems to be interesting is SharePoint 2007 SoftwareFactoryLite (still in beta) on CodePlex. This is a project based on the Microsoft Guidance Automation Toolkit.