NOTE: Following programming examples is for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This sample code assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures.
private void SelectRecordByCGOID()
{
//prepare the find item request: we have to use FindItem because
//this is the only way to search by CleanGlobalObjectID; GetItem does not allow us
//to search with Restrictions
FindItemType findItemRequest = new FindItemType();
DistinguishedFolderIdType[] folderIDArray = new DistinguishedFolderIdType[1];
folderIDArray[0] = new DistinguishedFolderIdType();
folderIDArray[0].Id = DistinguishedFolderIdNameType.calendar;
folderIDArray[0].Mailbox = new EmailAddressType();
folderIDArray[0].Mailbox.EmailAddress = "brijs@msglab.com";
// Add folders to the request.
findItemRequest.ParentFolderIds = folderIDArray;
findItemRequest.Traversal = ItemQueryTraversalType.Shallow;
//Prepare an Item shape type that defines how the items in view will be returned.
ItemResponseShapeType itemShapeDefinition = new ItemResponseShapeType();
itemShapeDefinition.BaseShape = DefaultShapeNamesType.AllProperties ;
//filter the results by the CleanGlobalObjectID passed in
PathToExtendedFieldType path = new PathToExtendedFieldType();
path.PropertyId = 35;
path.PropertyIdSpecified = true;
path.PropertySetId = "6ED8DA90-450B-101B-98DA-00AA003F1305";
path.PropertyType = MapiPropertyTypeType.Binary;
FieldURIOrConstantType constant = new FieldURIOrConstantType();
ConstantValueType constantValue = new ConstantValueType();
constantValue.Value = itemGCOID ;
constant.Item = constantValue;
RestrictionType restriction = new RestrictionType();
IsEqualToType equal = new IsEqualToType();
equal.Item = path;
equal.FieldURIOrConstant = constant;
restriction.Item = equal;
//Add the itemShape definition and restriction to the FindItem request
findItemRequest.ItemShape = itemShapeDefinition;
findItemRequest.Restriction = restriction;
FindItemResponseType findItemResponse = binding.FindItem(findItemRequest);
for (int i = 0; i < findItemResponse.ResponseMessages.Items.Length; i++)
{
//verify the FindItem request was successfull
if (findItemResponse.ResponseMessages.Items[i].ResponseClass != ResponseClassType.Success)
{
throw new Exception(string.Format(
"Unable to find calendar view by CleanGlobalObjectID \r\n{0}\r\n{1}",
findItemResponse.ResponseMessages.Items[i].ResponseCode,
findItemResponse.ResponseMessages.Items[i].MessageText));
}
else
{
//Success
//get the calendar items contained in the response
FindItemResponseMessageType findItemResponseMessage = (FindItemResponseMessageType)findItemResponse.ResponseMessages.Items[i];
ArrayOfRealItemsType findItemResponseItems = (ArrayOfRealItemsType)findItemResponseMessage.RootFolder.Item;
for (int x = 0; x < findItemResponseMessage.RootFolder.TotalItemsInView; x++)
{
if (findItemResponseItems.Items[x] is CalendarItemType)
{
CalendarItemType calendar = (CalendarItemType)findItemResponseItems.Items[x];
Console.WriteLine( "Item found ");
Console.WriteLine( calendar.Subject);
}
}
}
}
}