Frage

Ich bin für ein klares, vollständiges Beispiel programmatisch alle Dokumente aus einer bestimmten Dokumentbibliothek zu löschen, über das Sharepoint-Objektmodell. Die DocLib enthält keine Ordner. Ich suche die Dokumente vollständig (dh ich will nicht, dass sie in den Papierkorb).

löschen

Ich kenne SPWeb.ProcessBatchData, aber irgendwie scheint es nie für mich zu arbeiten.

Danke!

War es hilfreich?

Lösung

ich mit dem ProcessBatchData Ansatz beharren würde, vielleicht wird dies helfen:

  

Vincent Rothwell hat bedeckt diese   Beste:    http://blog.thekid.me.uk/archive/2007/02/24/deleting-a-considerable-number-of-items-from-a-list-in-sharepoint.aspx

Ansonsten bin ich nicht sicher, ob die andere Empfehlung funktionieren wird, wie eine Foreach-Schleife nicht mag, dass die Anzahl der Elemente in der Auflistung Änderungen mit jeder löschen.

Sie sind wahrscheinlich am besten ein Reverse-for-Schleife zu tun (ich habe diesen Code nicht testen, um nur ein Beispiel):

for (int i = SPItems.Length - 1; i >= 0; i--)
{
    SPListItem item = SPItems[i];
    item.File.Delete();
}

Andere Tipps

Dies ist nicht der richtige Weg Artikel zu löschen. Folgen hier posten http: //praveenbattula.blogspot. com / 2009/05 / Löschen-list-Artikel-at-Zeit-von-list.html

Sie müssen nur alle Dateien Ihrer Dokumentbibliothek gehen.

foreach(SPListItem item in SPContext.Current.Web.Lists["YourDocLibName"].Items)
{
    //TODO: Verify that the file is not checked-out before deleting
    item.File.Delete();
}

Der Aufruf der Löschmethode auf eine Datei aus dem API nicht den Papierkorb nicht verwendet. Es ist eine gerade löschen. Sie müssen noch zu überprüfen, ob die Datei nicht überprüft-out.

Hier finden Sie einige Referenz:

Powershell Art und Weise:

function ProcessFolder {
    param($folderUrl)
    $folder = $web.GetFolder($folderUrl)
    foreach ($file in $folder.Files) {
        #Ensure destination directory
        $destinationfolder = $destination + "/" + $folder.Url 
        if (!(Test-Path -path $destinationfolder))
        {
            $dest = New-Item $destinationfolder -type directory 
        }
         #Delete file by deleting parent SPListItem
        $list.Items.DeleteItemById($file.Item.Id)
    }
}

#Delete root Files
ProcessFolder($list.RootFolder.Url)

#Delete files from Folders or Document Sets
foreach ($folder in $list.Folders) {
    ProcessFolder($folder.Url)
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top