Monday, February 3, 2014

ProcessBatchData - Fetching the error rows

Hi,


I am using the ProcessBatchData to insert multiple records.


In the Batch XML, I have added "OnError = continue".


I am using the below code:



private readonly string BatchXMLBanner =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><ows:Batch OnError=\"Continue\">{0}</ows:Batch>";

private readonly string BatchXMLMethod =
"<Method ID=\"{0}\"><SetList>{1}</SetList><SetVar Name=\"ID\">New</SetVar><SetVar Name=\"Cmd\">Save</SetVar>{2}</Method>";
private readonly string BatchXMLSetVar =
"<SetVar Name=\"urn:schemas-microsoft-com:office:office#{0}\">{1}</SetVar>";

string Batch = buildBatch(dt, listID);
string BatchReturn = oWeb.ProcessBatchData(Batch);

private string buildBatch(DataTable dataTable, Guid guid)
{
StringBuilder XMLSetVarLines = new StringBuilder();
StringBuilder XMLSetMethods = new StringBuilder();

int methodID = 0;

foreach (DataRow row in dataTable.Rows)
{
foreach (DataColumn column in dataTable.Columns)
{
var fieldname = column.ColumnName;
if (row[fieldname] != null)
{
if (!string.IsNullOrEmpty(row[fieldname].ToString()))
{
var fieldvalue = row[fieldname].ToString().Replace("&", "&amp");
XMLSetVarLines.Append(String.Format(BatchXMLSetVar, fieldname, fieldvalue));
}
}
}

XMLSetMethods.Append(String.Format(BatchXMLMethod, methodID, guid, XMLSetVarLines));

methodID++;

XMLSetVarLines.Length = 0;
}
return (String.Format(BatchXMLBanner, XMLSetMethods));
}



In the resultant xml, I get the below:



<Results><Result ID="0" Code="-2130575332">
<ErrorText>Invalid date/time value.

A date/time field contains invalid data. Please check the value and try again.</ErrorText></Result>
...
</Results>



After the batchdata is processed, how to identify how many rows failed and how to show that in datatable?


Thanks


No comments:

Post a Comment