Dienstag, 24. März 2009

Attachments auslesen

Um programmatisch an die Attachments eines Listeneintrags heranzukommen, kann nicht einfach die SPAttachmentCollection ausgelesen werden, da diese nur Strings enthält.

Die angehängten Dateien bekommt man über diesen Aufruf:

SPFolder folder = spWeb.Folders["Lists"].SubFolders[spList.Title].SubFolders["Attachments"].SubFolders[spListItem.ID.ToString()];


foreach (SPFile spFile in folder.Files)
{
// code to work with spFile...
}



Wie auf dem Screenshot zu sehen, scheint es eine Art virtuelle Liste "Attachments" unterhalb der Liste "test" zu geben, in der wiederum in einem SubFolder "1" (die ID des ListenItems "Attachment") das Attachment "code.txt" abgelegt wird.

Montag, 23. März 2009

Reservierte Namen in der Dokumentenbibliothek

Vorsicht ist geboten bei der Namenswahl für Folder in einer Dokumentenbibliothek.
Nicht jeder Name kann auf jeder Ebene vergeben werden. Leider sind die reservierten Worte, bzw. Wortbestandteile nirgends aufgelistet oder ich habe sie noch nicht gefunden.

Nicht benutzt werden sollten:

* forms (auf Root-Ebene), da dieser Folder reserviert ist für die .aspx-Seiten, mit denen Einträge in der Dokumentenbibliothek bearbeitet werden können
* die Endungen _file, _files, .files (alle Ebenen). Benutzt werden können diese Wortbestandteile allerdings, wenn nach ihnen noch Zeichen kommen, z.B. _files2. Sollte es solch ein Verzeichnis geben, wird es von SharePoint nach dem Anlegen automatisch umbenannt und ein Unterstrich angefügt. Außerdem scheint es das Objektmodell zu verwirren denn bei Operationen auf dem SPFolder-Objekt erscheinen dann z.B. solche Fehlermeldungen: "This operation can only be performed on a file; "Documents/folder1/01_Source_Files/Folder2" is a folder."

Sollte ich auf weitere in Dokumentenbibliotheken "verbotene" Worte stoßen, werde ich sie hier posten.