SharePoint 2010 - Client Object Model With Date Query

Challenge

You are working on a Task List which contains creation dates of various months. You need to search and find the tasks of the current month.

sharepointclientobjectmodel1.gif

How to achieve this using CAML at Client Object Model?

Data

The following is the data for the Task List:

sharepointclientobjectmodel2.gif

Note: The test application contains a Create Data button to generate the list & data for you. Please ensure you are running on a test SharePoint server.

Using the Application

You can download and run the attached source code.

sharepointclientobjectmodel3.gif

The buttons perform the following:

  • Create Data: Creates the Task List with some monthly data
  • Show All Data: Shows all the items in the Task List in the grid below
  • Show this Month Data: Shows only the current month data using CAML query filtering

CAML Query

The following is the CAML query for specifying the dates:

query.ViewXml = @"<View>" +
"<Query>" + "<Where><And>" +
    "<Geq>" +
        "<FieldRef Name='DueDate'/>" +
        "<Value Type='DateTime' IncludeTimeValue='FALSE'>" + startDateFx + "</Value>" +
    "</Geq>" +
    "<Leq>" +
        "<FieldRef Name='DueDate'/>" +
        "<Value Type='DateTime' IncludeTimeValue='FALSE'>" + endDatFx + "</Value>" +
    "</Leq>" +
    "</And></Where>" +
"</Query>" +
"</View>";

Filters

We are using Geq (Greater than or Equal) and Leq (Less than or Equal) filters in the query.

Date Format

Please note that the dates are formatted as below:

string startDateFx = startDate.ToString("yyyy-MM-ddTHH:mm:ssZ");
string endDatFx = endDate.ToString("yyyy-MM-ddTHH:mm:ssZ");

Please note that in the Server Object Model we can use the SPUtility.CreateISO8601DateTimeFromSystemDateTime method to achieve the same.

CAML Query Builder

You can validate your CAML queries using the following tool:

U2U CAML Query Builder

http://www.u2u.net/res/Tools/CamlQueryBuilder.aspx

Executing the Application

On executing the application and clicking the buttons we will see the results below:

sharepointclientobjectmodel4.gif

The first task list displays all the items and the second task list displays on the items in the current month based on the Due Date column.

References

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility_methods.aspx
http://www.u2u.net/res/Tools/CamlQueryBuilder.aspx

Summary

In this article we have explored the solution for handling date in client object model. I hope the code could help you in a scenario involving client object model. The attachment contains the code we have discussed.