Batch Update – SharePoint Tuesday, Dec 8 2009 

Hi Guys, Today i would like to explain you about the batch update process in SharePoint. Batch (Group of items), the meaning is to update a large number of items to the SharePoint list by passing the values as XML elements. Consider if u want to update the list with more than 100 items. In this case if u use foreach it will be very expensive and it suck ur time. Moreover if u use SPListItem.Update() it takes 2.8secs for updating a single item. If u r using ProcessBatchUpdate it takes 30 secs to update to a maximum of 200 – 300 items based on ur requirement. So my suggestion is to use ProcessBatchUpdate for Adding, Updating and Deleting a large number of items from the SharePoint List.
 
Lets see how to perform this command through the SharePoint object model
 
Consider that u r adding items in the list with Title field as a running numbers. This is for example ah
 
First of all u should format the XML file for Inserting, Updating or Deleting the items in list
 
StringBuilder methodBuilder = new StringBuilder();
string batchFormat = “<?xml version=\”1.0\” encoding=\”UTF-8\“?>” +
                                “<ows:Batch OnError=\”Return\“>{0}</ows:Batch>”;
// For Updating
string methodFormat = “<Method ID=\”{0}\”>” +
                                   “<SetList>{1}</SetList>” +
                                   “<SetVar Name=\”Cmd\”>Save</SetVar>” +
                                   “<SetVar Name=\”ID\”>{2}</SetVar>” +
                                   “<SetVar Name=\”urn:schemas-microsoft-com:office:office#Job_x0020_No\”>{3}</SetVar>” +
                                   “</Method>”;
For update command pass the ItemID for ID parameter and the values.
 
// For Inserting
string methodFormat = “<Method ID=\”{0}\”>” +
                                   “<SetList>{1}</SetList>” +
                                   “<SetVar Name=\”Cmd\”>Save</SetVar>” +
                                   “<SetVar Name=\”ID\”>New</SetVar>” +
                                   “<SetVar Name=\”urn:schemas-microsoft-com:office:office#Job_x0020_No\”>{2}</SetVar>” +
                                   “</Method>”;
for (int i = 0; i < 10000; i++)
{
    methodBuilder.AppendFormat(methodFormat, i, listGuid, “1”);
}
 
If u observe the code we are passing the MethodID as running numbers, listguid, values
 
// For Deleting
string methodFormat = “<Method ID=\”{0}\”>” +
                                   “<SetList>{1}</SetList>” +
                                   “<SetVar Name=\”Cmd\”>Delete</SetVar>” +
                                   “<SetVar Name=\”ID\”>{2}</SetVar>” +
                                   “</Method>”;
For delete command get the item collection to delete and pass the ItemID to delete.
 
Note: Please pass the Fields internal name in the XML.
 
batch = string.Format(batchFormat, methodBuilder.ToString());
 
The above method will perform the operation and will return XML value as string. It is not necessary. Just capture that value in a string.
 
I hope u understand the concept of ProcessBatchUpdate in SharePoint. Just give a try and later u will become impressed. If there is any query don’t forget to mail me. Catch me at sudharsan_1985@live.in, sudharsan.zylog@gmail.com
 
 Cheers…
 
 
 

SPGridView Problem – Paging and Grouping Tuesday, Dec 8 2009 

Hi guys, i hope u all enjoyed my previous posts. Here i would like to share some information regarding SPGridView in SharePoint. It is one of the most effective and advanced control in SharePoint. Many of them have used this control and they succeed in their part. As per one of the client requirement i have developed a application page with SPGridview and i have added Paging and Grouping. First i add only the paging with custom paging template it works fine. But, when i try to add the Grouping it throws an Unknown Error. I have searched all over the net and i have found the solution. If anyone has encountered this problem please change the EnableViewState property to false and it will work.

Cheers…