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.




Feature: Eigenes ListTemplate mit mehreren eigenen ContentTypes

Unbeantwortet Dieser Beitrag hat 8 Antworten

Ohne Rang
246 Beiträge
Uli Armbruster erstellt 14 Jan. 2011 00:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hey,

ich habe zwei Features. Ein Feature enthält alle meine Fields und Content Types und das andere ein ListTemplate, welches die Content Types referenziert. 

Erstellt wird alles korrekt, sodass alle Websitespalten vorhanden und korrekt sind.

 

Es werden auch alle Inhaltstypen korrekt erzeugt. Vererbung und Spalten dazu passen.

Liste wird korrekt mit allen Spalten und den gesetzten Inhaltstypen erzeugt.

 

Wenn ich nun ein Element in der Liste erstellen will, zeigt es mir auch alle 4 Inhaltstypen zur Auswahl an. Einziges Problem: Egal welchen Typ ich auswähle, die NewForm zeigt mir immer die gleichen Felder des einen Inhaltstyps an. Und zwar genau die Felder des Inhaltstyps, der in der schema.xml des ListTemplates hinzugefügt wird (im vorliegenden Fall fett markiert). So sieht es aus:

 

<?xml version="1.0" encoding="utf-8"?>

<List xmlns="http://schemas.microsoft.com/sharepoint/"

      xmlns:ows="Microsoft SharePoint"

      Title="Calendar"

      Direction="$Resources:Direction;"

      Url="Lists/Calendar"

      EnableContentTypes="TRUE"

      MultipleTypes="TRUE"

      VersioningEnabled="True"

      BaseType="0">

 

  <MetaData>

    <ContentTypes>  

      <ContentTypeRef ID="0x010200B3CF9F38306647F9BD84232126E28485">

        <Folder TargetName="Event" />

      </ContentTypeRef>

 

      <ContentTypeRef ID="0x010200B3CF9F38306647F9BD84232126E28485008CFA28375E7B4606A69C114824A1675F">

        <Folder TargetName="Event" />

      </ContentTypeRef>

 

      <ContentTypeRef ID="0x010200B3CF9F38306647F9BD84232126E2848500208AC7CCB0F4454FB98D6DFA3E85C241">

        <Folder TargetName="Event" />

      </ContentTypeRef>

 

      <ContentTypeRef ID="0x010200B3CF9F38306647F9BD84232126E28485002D904E6F716D4A7998E7BB8202CD761A">

        <Folder TargetName="Event" />

      </ContentTypeRef>

 

      <ContentTypeRef ID="0x010200B3CF9F38306647F9BD84232126E28485003808F6EEA1BC42C991428C01756704A1">

        <Folder TargetName="Event" />

      </ContentTypeRef>

    </ContentTypes>

.....

 

Übrigens: Das Attribut “MultipleTypes” wird nicht erkannt (laut Google muss es das aber geben). Der Fehler muss definitiv an beschriebener Stelle liegen, da wenn ich selbst eine Liste erstelle und die 4 Content Types hinzufüge alles sauber funktioniert!

Alle Antworten

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 14 Jan. 2011 08:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Uli Armbruster"]<Folder TargetName="Event" />[/quote]

Ändere das mal so um, das jeder einen eigenen Namen hat. Wenn du diese CT über die Oberfläche hinzufügst und im CT selbst kein Folder angegeben hast nimmt er automatisch den Namen des CT und diese muss eindeutig sein.

Ohne Rang
246 Beiträge
Uli Armbruster Als Antwort am 14 Jan. 2011 11:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

In die Richtung hatte ich auch mal recherchiert. Ich dachte, dass es vielleicht Attribute für das ContentTypeRef Element gibt. Habe aber nichts gefunden. Habe es geändert, hat aber auch nichts gebracht. Habe dazu auch folgende Aussage gefunden:

>>The ContentTypeRef element has a required attribute ID, that specifies the ID of the referred content type. The Folder child element is optional, and is used to >> specify the relative folder path (inside the list's root folder) for the content type's resource folder. Most of the times, it's value is the name of the content type.

 

Habe es jetzt trotzdem mal so gemacht:

 

    <ContentTypes>      

      <ContentTypeRef ID="0x010200B3CF9F38306647F9BD84232126E28485008CFA28375E7B4606A69C114824A1675F">

        <Folder TargetName="Außer Haus" />

      </ContentTypeRef>

 

      <ContentTypeRef ID="0x010200B3CF9F38306647F9BD84232126E2848500208AC7CCB0F4454FB98D6DFA3E85C241">

        <Folder TargetName="Im Haus" />

      </ContentTypeRef>

 

      <ContentTypeRef ID="0x010200B3CF9F38306647F9BD84232126E28485002D904E6F716D4A7998E7BB8202CD761A">

        <Folder TargetName="Krank" />

      </ContentTypeRef>

 

      <ContentTypeRef ID="0x010200B3CF9F38306647F9BD84232126E28485003808F6EEA1BC42C991428C01756704A1">

        <Folder TargetName="Urlaub" />

      </ContentTypeRef>

    </ContentTypes>

 

 

Die ContentTypes sehen übrigens so aus:

 

  <ContentType

  ID="0x010200B3CF9F38306647F9BD84232126E2848500208AC7CCB0F4454FB98D6DFA3E85C241"

  Name="Im Haus"

  Description="Zum Eintragen von besonderen Anwesenheiten"

  Group="_heco Kalender">

    <FieldRefs>

      <FieldRef ID="{114D6496-E714-48A7-8D02-A24FBCC22AFC}" Name="HecoImHaus" Required="TRUE"/>

    </FieldRefs>

  </ContentType>

 

  <ContentType

  ID="0x010200B3CF9F38306647F9BD84232126E28485008CFA28375E7B4606A69C114824A1675F"

  Name="Außer Haus"

  Description="Zum Eintragen der Abwesenheit"

  Group="_heco Kalender">

    <FieldRefs>

      <FieldRef ID="{E1079B55-62AA-4600-B900-651107122699}" Name="HecoAusserHaus" Required="TRUE"/>

    </FieldRefs>

  </ContentType>

 

 

"Der Adler fliegt allein, der Rabe scharenweise; Gesellschaft braucht der Tor, und Einsamkeit der Weise."

Ohne Rang
246 Beiträge
Uli Armbruster Als Antwort am 14 Jan. 2011 11:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe gerade noch folgendes gemacht: Ich habe lediglich einen Inhaltstyp in der schema.xml referenziert und danach später in der eigentlichen Liste alle 3 anderen manuell hinzugefügt. Funktioniert auch nicht! Wenn ich das ListTemplate ohne Inhaltstypen anlege und alle hinzufüge funktioniert es auch immer noch nicht! Vielleicht ist der Fehler doch an einer anderen Stelle?

"Der Adler fliegt allein, der Rabe scharenweise; Gesellschaft braucht der Tor, und Einsamkeit der Weise."

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 17 Jan. 2011 08:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Es kann passieren das CT nicht gelöscht werden z.B. dann wenn diese noch genutzt werden und das Feature deaktiviert wurde.

EnableContentTypes="TRUE" im List Schema?

Schau mal hier:

http://www.shumov.eu/allgemein/content-type-kann-nicht-geloscht-werden-eine-hardcore-losung/

DB Änderungen auf eigene Gefahr!!!!!

Ohne Rang
634 Beiträge
Olaf Didszun Als Antwort am 17 Jan. 2011 09:32
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich glaube nicht, dass es etwas mit dem Löschen zu tun hat. Ich habe das Wochenende damit verbracht, basierend auf dem ContentType "Events" eigene Inhaltstypen abzuleiten und diese (eigenen) Inhaltstypen gemeinsam in ein List Template einzubinden. Installiert wurde die Solution in eine frische Site-Collection. Es zeigte sich generell das von Uli geschilderte Phänomen, dass, egal mit welchem Inhaltstyp ich ein neues Element angelegen will, in der Maske immer nur die Felder für den ersten (Standard-) Inhaltstyp angezeigt werden. Dabei habe ich in der schema.xml sowohl mit ContentTypeRef-, als auch mit ContentType-Knoten getestet.

Ich habe parallel auch einmal mit Inhalttypen getestet, die von Item (0x01) abgeleitet werden, damit also ein List Template gefüttert, dass einer Custom List entspricht, da ist das Verhalten in Ordnung !?!

Im Moment würde ich sagen, irgendwo gibt es bei Kalendern noch einen wichtigen Schalter, der in den Inhaltstypen oder in der schema.xml benutzt werden muss (den aber auch Visual Studio 2010 nicht kennt), oder da ist ein sehr unschöner Fehler im System.

Jede Idee ist willkommen.

Grüße

Olaf

 

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 17 Jan. 2011 10:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mal Inherits="FALSE" im ContentType gesetzt und alle FieldRef's kopiert?

Sonst einfach nicht vom Standard ContentType von Events ableiten sonder nur von Element und alle Felder (FieldRef) vom CT Event aus den SP ContentTypes kopieren.

Was mir noch aufgefallen ist gibt es eigentlich den ParentCT in deiner Solution: 0x010200B3CF9F38306647F9BD84232126E28485? Da dieser hier nicht definiert ist.

Ohne Rang
246 Beiträge
Uli Armbruster Als Antwort am 17 Jan. 2011 15:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, den gibt es. Das ist der Basistyp, von dem die anderen 4 ableiten:

  <ContentType 

    ID="0x010200B3CF9F38306647F9BD84232126E28485"

    Name="Heco Kalender Basis"

    Description="Basis-Inhaltstyp für den Heco-Kalender"

    Group="_heco Kalender">

    <FieldRefs>

      <FieldRef ID="{60FF3BE7-C468-4F31-8EDF-98F4E96210E9}" Name="HecoMitarbeiter" Required="TRUE"/>

      <FieldRef ID="{8F0BAA15-AE1C-4C77-A862-513DED24B9AE}" Name="HecoMitarbeitername" Hidden="TRUE"/>

      <FieldRef ID="{E04AD88F-7290-49AC-B62B-927EDA9D0EEA}" Name="HecoBereich" Required="TRUE"/>

      <FieldRef ID="{18DE7990-C241-4B23-BDC4-EFD079EB2D7A}" Name="HecoArt" Hidden="TRUE"/>

      <FieldRef ID="{0061B64D-7E11-4498-90CC-97A24036DA79}" Name="HecoAnmerkung"/>

    </FieldRefs>

    <XmlDocuments>

      <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/events">

        <spe:Receivers xmlns:spe="http://schemas.microsoft.com/sharepoint/events">

          <Receiver>

            <Name>HecoKalender.ItemAdded</Name>

            <Type>ItemAdded</Type>

            <SequenceNumber>1000</SequenceNumber>

            <Assembly>Serviceportals.Customer.Heco.KalenderEvent,Version=1.0.0.0,Culture=neutral,PublicKeyToken=292af8c0d2c5c128</Assembly>

            <Class>Serviceportals.Customer.Heco.KalenderEvent</Class>

            <Data></Data>

            <Filter />

          </Receiver>

          <Receiver>

            <Name>HecoKalender.ItemUpdated</Name>

            <Type>ItemUpdated</Type>

            <SequenceNumber>1000</SequenceNumber>

            <Assembly>Serviceportals.Customer.Heco.KalenderEvent,Version=1.0.0.0,Culture=neutral,PublicKeyToken=292af8c0d2c5c128</Assembly>

            <Class>Serviceportals.Customer.Heco.KalenderEvent</Class>

            <Data></Data>

            <Filter />

          </Receiver>

        </spe:Receivers>

      </XmlDocument>

    </XmlDocuments>

  </ContentType>

"Der Adler fliegt allein, der Rabe scharenweise; Gesellschaft braucht der Tor, und Einsamkeit der Weise."

Ohne Rang
246 Beiträge
Uli Armbruster Als Antwort am 27 Jan. 2011 12:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nach ausgiebigem Testen steht fest, dass dies ein Fehler in SharePoint ist. 

"Der Adler fliegt allein, der Rabe scharenweise; Gesellschaft braucht der Tor, und Einsamkeit der Weise."