SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Wie bekomme ich nur Customer-Spalten einer List?

Unbeantwortet Dieser Beitrag hat 3 Antworten

Ohne Rang
54 Beiträge
DDG erstellt 23 Okt. 2012 16:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

Ich habe folgendes Problem:

Ich möchte von einer List in der ich mehrere Websitespalten habe auslesen. Bisher hole ich mir alle Felder über den Befehl "Liste.Fields;", jedoch bekomme ich da auch die Spalten vom System wie "ID", "Inhaltstyp" usw.. Um dies zu umgehen habe ich eine View erstellt die nur die benötigten Spalten enhält und hab mir die Fields der View geholt (foreach (String itemField in viewFieldCollection)). Das Problem dabei ist, dass mir diese Variante bei manchen Spalten name1_x0020_name2 oder sowas ähnliches zurückliefert, mit dieser Ausgabe kann ich leider auch nichts anfangen. Ich würde mich freuen wenn mir jmd sagen kann wie ich aus einer List nur die "User"-Spalten erhalte und nicht die System-Spalten. 

Viele Grüße,

Dennis

 

Alle Antworten

Ohne Rang
634 Beiträge
Olaf Didszun Als Antwort am 23 Okt. 2012 22:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das wird nicht gehen. Es gibt keine Kennzeichnung für "System-Spalten". Für das Objektmodell sind alle Spalten gleich.

Beste Grüße

Olaf

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 24 Okt. 2012 08:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Man könnte mit foreach alle Spalten der Liste durchgehen und dabei die ReadOnly- und die Hidden-Eigenschaften prüfen. Damit hat man die meisten Systemfelder ausgefiltert.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
54 Beiträge
DDG Als Antwort am 24 Okt. 2012 09:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Zuerst danke für eure schnellen Antworten. Ich habe inzwischen eine Lösung gefunden. Ich weiß gar nicht wie ich die so oft überlesen konnte. Unter den SPField Eigenschaften gibt es eine Eigenschaft FromBaseType, welche true zurückliefert wenn die Spalte vom Base Type ist.

Beschreibung von msdn:

The base field types are defined in FLDTYPES.XML, which defines the default schema for lists. Every built-in list in a site inherits its schema from a base type. If the FromBaseType property returns true, the field cannot be converted to another field type, nor can it be deleted.

Code sample:

foreach (SPField proField in properties.ListItem.ParentList.Fields)
{
                           if (!proField.FromBaseType)
                           {
                               //Custom Code
                           }
}

und noch ne Grafik:

enter image description here

Gruß Dennis