Erzwingen Sie das Dokumentinformationsbereich, um mit Code oder vorgeschriebener Dezieranlage anzuzeigen
-
16-10-2019 - |
Frage
In der Benutzeroberfläche kann ich in die Einstellungen für ContentType -Einstellungen -> Einstellungen für das Dokumentinformationsbereich -> und "Immer" auf True (markieren Sie das Kontrollkästchen) einbohren.
Wie setze ich diese Option über Code ein? (oder in einem ContentType -Defition in einer Funktion)
Lösung
Diese Informationen werden als als gespeichert XmlDocument
im Inhaltstyp. Das SPContentType
hat eine Eigenschaft namens namens XmlDocuments
Welches ist eine Sammlung von XmlDocument
Objekte. Sie können die XML mit solchen Informationen erhalten ;:
string xml = contentType.XmlDocuments["http://schemas.microsoft.com/office/2006/metadata/customXsn"];
Diese Zeichenfolge enthält XML. Für den Dip sollten Sie das überprüfen /customXsn/openByDefault
Element. Ein Wert von True
bedeutet, dass der Dip gezeigt wird, leer oder False
werde es nicht zeigen.
Um dies zu ändern, müssen Sie den XML abrufen, den Wert ändern, das aktuelle XMLDOCument aus dem Inhaltstyp entfernen und Ihre neu konstruierte XML hinzufügen und schließlich aktualisieren. So was:
string schema = "http://schemas.microsoft.com/office/2006/metadata/customXsn";
// load old settings
string xml = contentType.XmlDocuments[schema];
// load it in an Xml Document
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("xsn",schema);
// get the DIP info node
XmlNode node = doc.SelectSingleNode("/xsn:customXsn/xsn:openByDefault", nsmgr);
// Set it to true
node.InnerText = bool.TrueString;
// delete the old one
contentType.XmlDocuments.Delete(schema);
// add the new xml
contentType.XmlDocuments.Add(doc);
// update the CT
contentType.Update();
Andere Tipps
In der Zwischenzeit habe ich die Lösung "Feature Definition" gefunden (dank SharePoint Manager). Fügen Sie der ContentType -Definition in der Elemente -Datei den folgenden XML hinzu:
<XmlDocuments>
<XmlDocument NamespaceURI="http://schemas.microsoft.com/office/2006/metadata/customXsn">
<customXsn xmlns="http://schemas.microsoft.com/office/2006/metadata/customXsn">
<xsnLocation></xsnLocation>
<cached>True</cached>
<openByDefault>True</openByDefault>
<xsnScope></xsnScope>
</customXsn>
</XmlDocument>
</XmlDocuments>