Advertisement
Guest User

Untitled

a guest
May 25th, 2015
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.40 KB | None | 0 0
  1. private static void ClearListItems(SPList list)
  2.         {
  3.             if (list == null || list.ItemCount <= 0) return;
  4.  
  5.             DateTime startDateTime = DateTime.Now;
  6.             string message1 = string.Format("Удаление документов в \"{0}\". Всего элементов: {1}.", list.Title,
  7.                 list.ItemCount);
  8.             Console.WriteLine(message1);
  9.  
  10.             string batchPattern =
  11.                 String.Format(
  12.                     "<Method><SetList Scope=\"Request\">{0}</SetList><SetVar Name=\"ID\">{{0}}</SetVar><SetVar Name=\"Cmd\">Delete</SetVar><SetVar Name=\"owsfileref\">{{1}}</SetVar></Method>",
  13.                     list.ID);
  14.  
  15.             var query = new SPQuery
  16.             {
  17.                 //ViewFieldsOnly = true,
  18.                 Folder = list.RootFolder,
  19.                 RowLimit = 50,
  20.                 ViewFields = string.Concat(new object[]
  21.                 {
  22.                     CAML.FieldRef("FileRef"),
  23.                     CAMLExtendet.FieldRef(SPBuiltInFieldId.ID),
  24.                     CAMLExtendet.FieldRef(SPBuiltInFieldId.UniqueId),
  25.                     CAML.FieldRef(NtdFields.OldId)
  26.                 }),
  27.                 Query = string.Concat(
  28.                     CAML.Where(
  29.                         CAML.And(
  30.                             CAML.Eq(CAMLExtendet.FieldRef(SPBuiltInFieldId.ContentType),
  31.                                 CAML.Value("Computed", "Элемент НТД")),
  32.                             CAML.Or(
  33.                                 CAML.IsNull(CAML.FieldRef(NtdFields.OldId)),
  34.                                 CAML.Eq(CAMLExtendet.FieldRef(SPBuiltInFieldId.ItemChildCount), CAML.Value(0))
  35.                                 )
  36.                             //CAML.Leq(CAMLExtendet.FieldRef(SPBuiltInFieldId.ID), CAML.Value(21000))
  37.                                 )),
  38.                     CAML.OrderBy(new object[]
  39.                     {
  40.                         CAMLExtendet.FieldRef(SPBuiltInFieldId.ID, CAML.SortType.Ascending)
  41.                     }))
  42.             };
  43.  
  44.             Console.WriteLine("> Перенос элементов из списка в корзину узла.");
  45.  
  46.             int deletedItemsCount = 0;
  47.             SPListItemCollection foundListItemCollection;
  48.  
  49.             DateTime moveToRecycleBinStartDateTime = DateTime.Now;
  50.  
  51.             do
  52.             {
  53.                 foundListItemCollection = list.GetItems(query);
  54.  
  55.                 if (foundListItemCollection.Count <= 0) break;
  56.  
  57.                 var batchBuilder = new StringBuilder();
  58.                 batchBuilder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Batch>");
  59.  
  60.                 var uniqueIds = new List<Guid>(foundListItemCollection.Count);
  61.                 for (int i = 0; i < foundListItemCollection.Count; i++)
  62.                 {
  63.                     SPListItem item = foundListItemCollection[i];
  64.                     batchBuilder.AppendFormat(batchPattern, item.ID, item.Folder.ServerRelativeUrl);
  65.                     uniqueIds.Add(item.UniqueId);
  66.                 }
  67.                 batchBuilder.Append("</Batch>");
  68.  
  69.                 string errors = list.ParentWeb.ProcessBatchData(batchBuilder.ToString());
  70.                 if (!string.IsNullOrEmpty(errors))
  71.                 {
  72.                     Console.WriteLine(">> Ошибка: {0}", errors);
  73.                 }
  74.  
  75.                 //list.ParentWeb.RecycleBin.Delete(uniqueIds.ToArray());
  76.  
  77.                 list.Update();
  78.  
  79.                 deletedItemsCount += foundListItemCollection.Count;
  80.  
  81.             } while (foundListItemCollection.Count > 0);
  82.  
  83.             DateTime moveToRecycleBinEndDateTime = DateTime.Now;
  84.             TimeSpan moveToRecycleBinDuration = moveToRecycleBinEndDateTime.Subtract(startDateTime);
  85.  
  86.             Console.WriteLine("> Перенесено элементов: {0} за {1}", deletedItemsCount, moveToRecycleBinDuration);
  87.  
  88.             Console.WriteLine("> Очистка корзины узла.");
  89.  
  90.             try
  91.             {
  92.                 list.ParentWeb.RecycleBin.DeleteAll();
  93.             }
  94.             catch
  95.             {
  96.             }
  97.  
  98.             DateTime endDateTime = DateTime.Now;
  99.             TimeSpan duration = endDateTime.Subtract(startDateTime);
  100.             string message2 = string.Format("Удаление документов в \"{0}\" завершено за {1}", list.Title, duration);
  101.             Console.WriteLine(message2);
  102.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement