Удаление элементов списка через ProcessBatchData () - PullRequest
0 голосов
/ 14 июня 2010

Вы можете создать пакетную строку для удаления всех элементов из списка SharePoint следующим образом:

  1: //create new StringBuilder
  2: StringBuilder batchString= new StringBuilder();
  3:  
  4: //add the main text to the stringbuilder
  5: batchString.Append("");
  6:  
  7: //add each item to the batch string and give it a command Delete
  8: foreach (SPListItem item in itemCollection)
  9: {
 10:    //create a new method section
 11:    batchString.Append("");
 12:    //insert the listid to know where to delete from
 13:    batchString.Append("" + Convert.ToString(item.ParentList.ID) + "");
 14:    //the item to delete
 15:    batchString.Append("" + Convert.ToString(item.ID) + "");
 16:    //set the action you would like to preform 
 17:    batchString.Append("Delete");
 18:    //close the method section
 19:    batchString.Append("");
 20: }
 21:  
 22: //close the batch section
 23: batchString.Append("");
 24:  
 25: //preform the batch
 26: SPContext.Current.Web.ProcessBatchData(batchString.ToString()); 

Единственный недостаток, который я могу вспомнить, это то, что все элементы, которые вы удаляете, будутположить в корзину.Как я могу предотвратить это?

Я также нашел решение, как показано ниже:

// web is a the SPWeb object your lists belong to

// Before starting your deletion
web.Site.WebApplication.RecycleBinEnabled = false;

// When your are finished re-enable it
web.Site.WebApplication.RecycleBinEnabled = true;

Ref [Here](http://www.entwicklungsgedanken.de/2008/04/02/how-to-speed-up-the-deletion-of-large-amounts-of-list-items-within-sharepoint/)

Но недостатком этого решения является то, что только будущие удаления будут отправляться не в корзины, а наудалит также все существующие элементы, которые пользователь не хочет.Любая идея, чтобы предотвратить не удалять существующие элементы?

Большое спасибо заранее,

TQT

1 Ответ

0 голосов
/ 16 июня 2010

Я не думаю, что можно обойти корзину с помощью пакетного обновления, однако вы можете изменить свой код на что-то вроде этого

foreach (SPListItem item in itemCollection)
   {
      item.Delete(); //this wont go to the recycle bin
      //or if you need to send it to the recycle bin then you can use
      item.Recycle();


   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...