zoukankan      html  css  js  c++  java
  • SharePoint SPListWS.Lists 调用数据量过大时报错的处理方法

    先看代码:

    private SPListWS.Lists _ws;
    
    private int _rowLimit = 100;
    
             //Add by spring yang
            /// <summary>
            ///
            /// </summary>
            /// <param name="listResultsPart"></param>
            public void UpdateQARelateField(List<SingleResultBE> listResults)
            {
                List<SingleResultBE> listResultsPart = null;
    
                if (listResults != null && listResults.Count > 0)
                {
                    for (int i = 0; i < listResults.Count / _rowLimit + 1; i++)
                    {
                        if (i == listResults.Count / _rowLimit)
                        {
                            listResultsPart =
                                listResults.GetRange(i * _rowLimit, listResults.Count - i * _rowLimit);
                        }
                        else
                        {
                            listResultsPart = listResults.GetRange(i * _rowLimit, _rowLimit);
                        }
                        UpdateQARelateFieldLimit(listResultsPart);
                      
                    }
                }
            }
    
    
            private void UpdateQARelateFieldLimit(List<SingleResultBE> listResults)
            {
                StringBuilder xml = new StringBuilder();
    
                xml.Append("<Batch OnError=\"Continue\">");
                foreach (SingleResultBE item in listResults)
                {
    
                    if (!string.IsNullOrEmpty(item.ListItemId.ToString()) && (!string.IsNullOrEmpty(item.QARelate) || !string.IsNullOrEmpty(item.RelateBy)))
                    {
                        xml.Append("<Method ID=\"" + item.ListItemId + "\" Cmd=\"Update\">");
                        xml.Append("<Field Name=\"ID\">" + item.ListItemId + "</Field>");
                        if (!string.IsNullOrEmpty(item.QARelate))
                        {
                            xml.AppendFormat("<Field Name=\"QARelated\"><![CDATA[{0}]]></Field>", item.QARelate);
                        }
                        if (!string.IsNullOrEmpty(item.RelateBy))
                        {
                            xml.AppendFormat("<Field Name=\"RelatedBy\"><![CDATA[{0}]]></Field>", item.RelateBy);
                        }
                        xml.Append("</Method>");
                    }
    
                }
                xml.Append("</Batch>");
    
                //Get the Batch node
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml.ToString());
    
                XmlNode batchNode = doc.SelectSingleNode("//Batch");
                _logger.Log("Started batch update list Items' readonly fields");
                XmlNode result = null;
                try
                {
                    //Call the webservice
                    result = _ws.UpdateListItems(Properties.ListName, batchNode);
                }
                catch (Exception ex)
                {
                    //_logger.Log(String.Format("Error update Items. Exception: {0}. Stack Trace: {1}", ex.Message, ex.StackTrace));
                }
                UpdateResultBE insertResult = new UpdateResultBE(result, Properties);
                if (Properties.IsNeedApprove)
                {
                    this.ApproveItemsByInsertResult(insertResult);
                }
            }
    
    把数据分成每次100条分次处理就不会报 webservers错误了.

  • 相关阅读:
    spring中的切入点
    spring AOP的基本概念
    sql server 批量修改数据表和存储过程的所有者(2000)或架构(2005)
    SQL SERVER 修改欄位(列)屬性或是名稱
    sql server 數據庫備份與還原 登錄名丟失 解決辦法
    开心农场给我们的20条人生启示
    sql建立遠端聯接
    windows无法存取指定的装置、路径或文件案
    Vs.net 2008 最搞笑的問題
    女儿长大了!
  • 原文地址:https://www.cnblogs.com/springyangwc/p/1970183.html
Copyright © 2011-2022 走看看