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.




Feld ContentType in NewForm

Unbeantwortet Dieser Beitrag hat 9 Antworten

Ohne Rang
54 Beiträge
DDG erstellt 8 Sept. 2014 15:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich habe eine Dokumentenbibliothek, die einen Default CT besitzt. Jedes neue Dokument soll auf diesem Inhaltstyp erstellt werden. Wir ein neues Dokument hochgeladen, wird per Quellcode ein neuer Inhaltstyp erstellt und dem Dokument zugewiesen. Das Problem besteht darin, dass der neu angelegte CT beim nächsten Hochladen eines Dokuments wird der CT in dem BuildIn Field "ContentTypes" zur Auswahl angeboten. Das sollte aber nicht sein.

Über die UI kann unter den Bibliothekseinstellungen der CT als nicht sichtbar definiert werden und er wird dann auch nicht mehr in der Auswahl angezeigt. Dies wollte ich nun über den Quellcode umsetzen. Wenn ich die CTs auf Hidden gesetzt habe hat dies nichts gebracht.

Dadurch habe ich direkt nach der Erstellung der Liste über den Befehl "Liste.RootFolder.ContentTypeOrder" die CTs geholt und gelöscht. Danach wieder den Default CT hinzugefügt. Das löst das Problem leider nicht komplett. Der erste über den Quellcode erstellte CT steht immer  noch zur Verfügung in der Auswahl die Nachfolgenden werden aber nicht mehr angezeigt. Unter den Bib-Einstellungen ist der CT auch als nicht sichtbar definiert, wird aber trotzdem angezeigt.

Weiß jmd wie ich die Auswahl Liste löschen kann? (Problem das CT Field ist ein computed Field) Oder hat jmd ein gute Idee wie ich das Erweitern der Auswahl unterbinden kann?

Viele Grüße,

Dennis

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Sept. 2014 15:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Setze die UniqueContentTypeOrder des RootFolders auf eine Liste, die nur den einen, gewünschten CT hat:

SPFolder rootFolder = list.RootFolder;
List<SPContentType> ctOrder = new List<SPContentType>();
ctOrder.Add(...);
rootFolder.UniqueContentTypeOrder = ctOrder;
rootFolder.Update();

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
54 Beiträge
DDG Als Antwort am 8 Sept. 2014 15:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das habe ich schon gemacht. Also Die Dokumentenbibliothek wird erstellt sobald ein Feature aktiviert wird. Im ER des Feature setze ich die ContentTypeOrder und die UniqueContentTypeOrder.

Ich glaube ich habe die beiden Listen auch im ER für die Liste im ItemUpdating gesetzt, aber das hat auch nichts geholfen. Die UniqueContentTypeOrder ist auch immer wieder null.

Ohne Rang
54 Beiträge
DDG Als Antwort am 8 Sept. 2014 16:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ahh sorry ich ich verwende schon die UniqueContentTypeOrder. Ich glaube die ContentTypeOrder ist auch nur Read-Only. Kann sein, dass ich sie zum falschen Zeitpunkt setze?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Sept. 2014 16:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also ich kann dazu nur sagen, daß ich damit bisher keine Probleme hatte. Was genau treibst Du denn da? Du schreibst oben auch, daß Du für jedes neue Dokument einen neuen Inhaltstyp anlegst. Das halte ich vorsichtig ausgedrückt für nicht besonders sinnvoll...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
54 Beiträge
DDG Als Antwort am 8 Sept. 2014 17:04
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also die DokBib ist eine zentrale Dokumentenbibliothek. Den Dokumenten wird ein neuer Inhaltstyp zugwiesen und dieser steht auf anderen Seiten in verschiedenen DokBibs zur Auswahl zur Verfügung. Damit auf den Inhaltstypen basierend neue Dokumente erstellt werden können.

Komisch bei mir scheint es nicht zu funktionieren, egal an welcher Stelle ich den Code ausführe. Der erste selbst angelegte CT ist immer vorhanden.

Trotzdem danke für deine Hilfe.

Ohne Rang
496 Beiträge
Derby Als Antwort am 8 Sept. 2014 18:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

 [quote user="DDG"]ich habe eine Dokumentenbibliothek, die einen Default CT besitzt. Jedes neue Dokument soll auf diesem Inhaltstyp erstellt werden. Wir ein neues Dokument hochgeladen, wird per Quellcode ein neuer Inhaltstyp erstellt und dem Dokument zugewiesen. Das Problem besteht darin, dass der neu angelegte CT beim nächsten Hochladen eines Dokuments wird der CT in dem BuildIn Field "ContentTypes" zur Auswahl angeboten. Das sollte aber nicht sein.[/quote]

Wo genau liegt der Sinn darin einen neuen CT per Code zu erstellen, wenn der CT der für jedes neue Dokument genutzt werden soll schon vorhanden und als Standard eingetragen?

Ohne Rang
54 Beiträge
DDG Als Antwort am 9 Sept. 2014 08:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also der Default CT beinhaltet Daten die für jedes Dokument gelten sollen. Diese Daten werden beim Anlegen angegeben, wie zum Beispiel eine Klassifizierung. Der neue CT wird per Quellcode angelegt und mit bestimmten Metadaten ergänzt. Jedes Dokument hat einen eigenen CT, um die Möglichkeit zu haben spezielle Metadaten den Dokumenten zu zuweisen. Warum genau zwei CTs, da die Daten aus dem Default CT nur für die Verteilung der Dokumente benötigt werden und nichts mit dem Inhalt zu tun haben.

Warum per Code, da es ein reproduzierbarer Vorgang ist. Es werden mehrere Dokumente hinzugefügt und es wäre blöd jedes mal von Hand einen CT anzulegen und dem Dokument zu zuweisen.

Ich hoffe das beantwortet dir die Frage nach dem Sinn.

Ohne Rang
496 Beiträge
Derby Als Antwort am 9 Sept. 2014 10:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wirklichen Sinn macht das trotzdem nicht. Überleg Dir mal wenn Ihr irgendwann mal 10000 oder mehr Dokumente in der Seite habt, hast Du auch genau so viele CT in der Seite. Wäre es nicht Sinnvoller 1 Default CT und 5-6 weitere CT die aber "Hidden" sind und je nach Dokument-Art, oder wonach Ihr die Dokumente klassifiziert, wird der CT auf diesen geändert? Und das müsste man nicht mal per Code machen, dafür reicht ein 5 Zeiler Workflow, welcher auch reproduzierbar ist.

 

Ohne Rang
54 Beiträge
DDG Als Antwort am 9 Sept. 2014 10:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also die Metadaten werden als Schnellbausteine gepflegt. Die Klassifizierung findet auf fachlicher Ebene statt. Jedes Dokument kann spezielle Metadaten haben. Zudem werden die Dokumente nicht direkt in die DokBibs kopiert sondern sollen über neues Dokument in der Auswahlliste zur Verfügung stehen. Wie kann ich das bewerkstelligen wenn ich einen Inhaltstyp mehreren Dokumenten zuweise? Einen Inhaltstyp kann ich nur eine Dokumentvorlage zuweisen oder?

Was spricht gegen Code? Welche Vorteile hat ein Workflow gegenüber Code (in diesem Fall ein Event Receiver)?