none
SharePoint 2010 Content Type Definition vollständig Anzeige im UI nicht

    Frage

  • Hallo zusammen,

    ich habe ein Problem mit SharePoint Content Typen.

    Wir haben via XML Definition einen Content Typen und Site Columns definiert. Diese wurden per WSP und Feature auf dem SharePoint Server ausgebracht.

    In einem zweiten Release haben wir weitere Site Columns definiert und dem Content Type hinzugefügt und das ganze aktualisiert wieder ausgebracht.

    Nach dem Deployment wurden die Features gezielt neu aktiviert. Im 14er Hive ist die Elements.xml vollständig mit den neuen Feldern.

    Im Dev System habe ich das Deployment auch getestet und dort die Datenbank geprüft, wie dort der Wert aussieht, auch dort ist das Feld beinhaltet.

    Wenn ich jedoch im User Interface zu den Content Typen auf Site Ebene navigiere und mir den Content Type ansehe, fehlen die neu hinzugefügten Felder im Interface.

    Schlimmer noch, wenn ich versuche, die Felder zu ergänzen (diese bietet er mir auch an hinzuzufügen), dann sagt SharePoint in einer Fehlermeldung, dass dieses Feld bereits existiert.

    Das Problem ist, dass wir die Spalte bereits in einer Bibliothek verbaut haben, wo wir sie auch aktiv nutzen und welche mit Inhalt befüllt ist, d.h. wir können die Spalte nicht ohne weiteres löschen.

    Kennt jemand das Problem, bzw. weiß jemand, wie ich das Problem lösen kann.

    Danke,

    Christian

    Mittwoch, 23. Januar 2013 08:41

Antworten

Alle Antworten

  • Hi Christian,
    die Beschreibung sieht aus wie ein unpassender Deployment-Prozess des Upgrades des ContentTypes. Dieser müsste analysiert werden. Wenn die Änderungen, wie beschrieben, durch wiederholte Aktivierung des betreffenden Features persistiert werden sollen, würde ich die Änderungen per Code durchführen -in einer Schleife für alle Änderungen prüfen, ob diese schon vorhanden und passend sind, und dann entsprechend per Code korrigieren bzw. ergänzen. Ggf. ist das rekursiv für alle Instanzen des ContentTypes zu machen.
     
    --
    Peter Fleischer
    Mittwoch, 23. Januar 2013 17:30
  • Hallo,

    danke für diese ersten Hinweise. Was ich noch rausfinden konnte ist folgendes.

    In den FieldRef des ContentTypes taucht mein Feld im produktiven System auf, jedoch nicht in den tatsächlichen Fields. (Ausgelesen über das Server Object Model).

    Dies ist ein wesentlicher Unterschied zum Entwicklungssystem, wo die Spalte sowohl in den FieldRefs, als auch in den Fields angelegt ist.

    Ich hab über das Server Object Model auch nicht die Möglichkeit im Site Content Type das Field zu löschen, dies ist nicht erlaubt und wirft eine Exception.

    Bzgl. der Definition des ContentTypes und des Fields habe ich folgenden Aufbau gewäht.

    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    	<ContentType
    		ID="0x01001A5CEE97CD8B4920BBD85433AB8D3575"
    		Name="$Resources:ContentType1_ContentTypeName;"
    		Description="$Resources:ContentType1_ContentTypeDescription;"
    		Group="$Resources:ContentType1_ContentTypeGroup;"
    		Version="0"
    		Inherits="TRUE">
    		<FieldRefs>
    			<FieldRef
    				ID="{393B25D3-F10D-4EAA-A805-92C709A250AA}"
    				Name="SiteColumn1"
    				Required="FALSE" />
    		</FieldRefs>
    	</ContentType>
    </Elements>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    	<Field
    		Group="$Resources:SiteColumn1_SiteColumnGroup;"
    		DisplayName="$Resources:SiteColumn1_SiteColumnDisplayName;"
    		ID="{393B25D3-F10D-4EAA-A805-92C709A250AA}"
    		SourceID="http://schemas.microsoft.com/sharepoint/v3"
    		StaticName="SiteColumn1"
    		Name="SiteColumn1"
    		Type="Text"
    		Required="FALSE"
    		MaxLength="255"
    		Description="$Resources:SiteColumn1_SiteColumnDescription;"></Field>
    </Elements>
    Ist das so in Ordnung oder passt dort schon etwas nicht?
    Donnerstag, 24. Januar 2013 13:53
  • Hi Christian,
    ein Verweis in einem Inhaltstyp erfordert zwingend auch ein Feld. Mit dem SharePoint Manager müsste die Felddeklaration auch sichtbar sein.
     
    --
    Peter Fleischer
    Freitag, 25. Januar 2013 06:20
  • Generell darfst du die element.xml nicht mehr erweitern wenn der Inhaltstype einmal deployed ist. Brauchst du eine neues Feld mußt du die Version erhöhen und brauchst eine sog. UpgradeAction.

    Mehr über die Upgrade Actions findest du hier: http://blogs.msdn.com/b/sanjaynarang/archive/2012/02/06/feature-upgrade-adding-fields-to-content-types-and-sharepoint-application-lifecycle-management.aspx
    http://www.sharepointnutsandbolts.com/2010/06/feature-upgrade-part-1-fundamentals.html

    lg
    Stefan


    http://www.n8d.at/blog
    Follow me on Twitter: StFBauer | n8design

    Microsoft Community Contributor 2011 / 2012
    MCTS - SharePoint / WSS Configuration and Development


    Montag, 28. Januar 2013 11:53