Tuesday, January 11, 2011

How-to copy calendar item in SharePoint

ClientContext client = new ClientContext(http://myweb/mysite/calendar);
var web = client.Web;

List listD = web.Lists.GetByTitle("Destination_Calendar");
client.Load(listD);
client.ExecuteQuery();

//clear destination list
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "";
ListItemCollection listDItems = listD.GetItems(camlQuery);
client.Load(listDItems);
client.ExecuteQuery();

//remove list items from the destination
foreach (ListItem li in listDItems.ToList())
{
li.DeleteObject();
client.ExecuteQuery();
}


//get source items
List list = web.Lists.GetByTitle("Source_Calendar");
client.Load(list);
client.ExecuteQuery();
camlQuery = new CamlQuery();
camlQuery.ViewXml = @"";
ListItemCollection listItems = list.GetItems(camlQuery);
client.Load(listItems);
client.ExecuteQuery();

ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();


//add list item to the destination list
foreach (ListItem listItem in listItems)
{

ListItem newItem = listD.AddItem(itemCreateInfo);
newItem["Title"] = listItem["Title"];
newItem["Description"] = listItem["Description"];
newItem["EventDate"] = listItem["EventDate"];
newItem["EndDate"] = listItem["EndDate"];
newItem["Category"] = listItem["Category"];
newItem["ParticipantsPicker"] = listItem["ParticipantsPicker"];
newItem["RecurrenceData"] = listItem["RecurrenceData"];
newItem["fRecurrence"] = listItem["fRecurrence"];
newItem["EventType"] = listItem["EventType"];
newItem["XMLTZone"] = listItem["XMLTZone"];
newItem["UID"] = System.Guid.NewGuid();

newItem.Update();
client.ExecuteQuery();

}