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.




ListInstance Schema.xml CustomSchema

Unbeantwortet Dieser Beitrag hat 11 Antworten

Ohne Rang
7 Beiträge
Oppirator erstellt 17 Okt. 2016 14:48
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Zusammen,

ich möchte in Visual Studio eine ListInstance anlegen. Da es in der Anwendung nur diese eine Instanz geben soll, benötige ich keine ListDefinition.

Das Problem besteht jetzt allerdings darin, eine selbsterstellte Schema.xml Datei mit der ListInstance zu verbinden. Dies ist ja nötig, um die nowendigen Spalten und ggfs. ContentTypes festzulegen.

Die Schema.xml habe ich direkt unter der ListInstance, also neben der Elements.xml abgelegt.

In der Elements.xml müsste ich ja jetzt unter CustomSchema die Schema.xml referenzieren. Welche Adresse muss ich hier eingeben? Ich erhalte immer Fehlermeldungen, dass die Datei nicht gefunden wird.

In den Eigenschaften der Schema.xml habe ich diese als ElementFile gekennzeichnet.

Kann mir jemand helfen?

Vg

Frank

 

 

Alle Antworten

Ohne Rang
634 Beiträge
Olaf Didszun Als Antwort am 17 Okt. 2016 14:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Frank,

wie kommst du darauf, dass du keine ListDefinition brauchst? Die ListDefinition ist das Template, mit dem die ListInstance angelegt wird. Also, ListDefinition anlegen und dann damit die ListInstance erzeugen. Genau so, wie es dokumentiert ist.

Beste Grüße

Olaf

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 17 Okt. 2016 15:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Zusätzlich noch der Hinweis, daß Du keine eigene Definition brauchst, nur weil die Liste ein paar Spalten mehr haben soll. Das kann man alles auch über Inhaltstypen regeln, die man auf eine Standard-Liste packt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
7 Beiträge
Oppirator Als Antwort am 18 Okt. 2016 15:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

erstmal vielen Dank für Eure Beiträge.

Häufig ist es so, dass ich eine Liste einmal benötige. Hierzu erstelle ich mir keine Listendefinition, die ja den Zweck erfüllt, eine Liste häufiger zu erstellen.

Ich verwende sehr oft den Typ "Benutzerdefinerte Liste" und füge dann die benötigten Felder ein. Möchte ich dies mit Visual Studio realisieren, muss ich doch eine ListInstance erstellen und mir hierzu ein benutzerdefiniertes Schema anlegen. Welchen Zweck erfüllt andernfalls das Attribut "CustomSchema" in der "Elements.xml"?

Das Thema wurde u.a. auch auf folg. Seite behandelt.

http://stackoverflow.com/questions/15066990/how-to-add-list-column-to-list-instance-without-list-definition

Wie gesagt, findet er bei mir lediglich die Schema.xml nicht.

Alternativ gibt es noch die Möglichkeit, eine Listdefinition anzulegen und diese auf Hidden zu setzen.

Ich finde es einfach schöner, den Vorlagenkatalog nicht mit Vorlagen zu befüllen, die ich nie wieder nutze. Lieber lasse ich den Vorlagenkatalog möglichst übersichtlich.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Okt. 2016 15:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wie ich oben geschrieben habe: einfach eine ListInstance aus einem vordefinierten Typ erzeugen und dann Deinen Inhaltstyp draufpacken. Einfach, schlank und sauber.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
7 Beiträge
Oppirator Als Antwort am 18 Okt. 2016 15:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Und wie packst Du den Inhaltstyp drauf? Dies macht man doch in der Schema.xml und nicht in der Elements.xml. Zumindest ist das bei den ListDefinitions so.

Ich hätte eine eigene Schema.xml erstellt und hier den ContentType definiert. Nur dies funktioniert eben nicht.

 

Sorry, aber wie sich aus meinen Postings erahnen lässt, bin ich neu in Sharepoint-Entwicklung (aber nicht in .net) :)

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Okt. 2016 15:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ach, jetzt habe ich auch endlich kapiert, wo Dein Problem liegt :-)

Das geht natürlich nicht deklarativ per XML (soll man laut Microsoft ohnehin gar nicht mehr benutzen). Aber es geht mit wenigen Zeilen Code in FeatureActivated.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
7 Beiträge
Oppirator Als Antwort am 18 Okt. 2016 16:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

:)

Aber müsste es nicht auch deklarativ gehen. Welchen Zweck erfüllt sonst "CustomSchema" in der Elements.xml. Man kann doch hier auf eine separate Schema-Datei verlinken. Nur funktioniert eben diese Verlinkung bei mir nicht, bzw. ich gebe den Pfad vermutlich falsch ein.

Mittels FeatureActivated würde es nautürlich auch gehen.

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 18 Okt. 2016 16:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

CustomSchema Funktioniert schon würde ich dir aber nicht empfehlen da dadurch die Lokalisierung verloren geht. Wenn du es unbedingt mit der Schema.xml umsetzen möchtest (was ich auch verstehen kann) dann lieber gleich ein eigenes Template welches vom Typ auch ein Calendar oder Contact sein darf.

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 18 Okt. 2016 16:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

kannst du mir sagen wo es steht das man ContentTypeBinding nicht mehr benutzen soll?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Okt. 2016 17:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Thomas Östreich"]kannst du mir sagen wo es steht das man ContentTypeBinding nicht mehr benutzen soll?[/quote]

Hallo Thomas,

das ging doch vor ein oder zwei Jahren groß rum. Oder war's schon zur Einführung von 2013? Natürlich finde ich jetzt keine Referenz mehr dazu, kann mich aber an einen Aufruf von MS erinnern, man solle doch bitte den deklarativen Ansatz vergessen.

Wo ich gerade so drüber nachdenke, könnte es aber sein, daß sich das nur auf die "neue" clientseitige Entwicklung bezieht. Und wenn man sich z.B. das PnP Projekt anschaut, findet man dort keinerlei XML mehr.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
634 Beiträge
Olaf Didszun Als Antwort am 18 Okt. 2016 20:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wenn ich heute etwas für SharePoint entwickeln muss, dann verfolge ich immer den Ansatz, dass es mit möglichst geringem Aufwand auch in der anderen Fraktion verwendbar ist (Cloud/On-Premise). Aus diesem Grund habe ich mich vollständig vom Server-side Object Model und dem deklarativen Ansatz für Columns, Content Types und Lists verabschiedet. Ich verwende hierfür ausschließlich das Office 365 PnP PowerShell Modul, und wo das nicht ausreicht, mache ich den Rest mit dem CSOM über die PowerShell. Damit lässt sich dann auch spielend leicht der ursprüngliche Hinweis von Andi umsetzen: nimm eine Custom List und füge den Rest über einen Content Type hinzu.

Beste Grüße
Olaf