Force le panneau d'information de document à afficher avec le code ou featuredefinition
-
16-10-2019 - |
Question
Dans l'interface utilisateur, je peux naviguer dans un ContentType paramètres -> Informations sur le document Paramètres du panneau -.> Et ensemble « Toujours afficher » true (marquer la case à cocher)
Comment mettre en i cette option par le code? (Ou dans un defition de contenttype dans une option)
La solution
Ces informations sont stockées en tant XmlDocument
dans le type de contenu. Le SPContentType
possède une propriété appelée XmlDocuments
qui est une collection d'objets XmlDocument
.
Vous pouvez obtenir le contenant Xml l'info comme ceci;:
string xml = contentType.XmlDocuments["http://schemas.microsoft.com/office/2006/metadata/customXsn"];
Cette chaîne contient Xml. Pour le DIP, vous devriez vérifier l'élément /customXsn/openByDefault
. Une valeur de moyens de True
que le DIP est affiché, vide ou False
ne le montrer.
Pour modifier cela, vous devez récupérer le Xml, modifiez la valeur, retirez le XmlDocument courant du type de contenu et ajoutez votre xml nouvellement construit et enfin mettre à jour. Comme ceci:
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();
Autres conseils
En attendant, je trouve la solution « de définition de fonction » (grâce à SharePoint Manager). Ajouter le code XML suivant à la définition de ContentType dans le fichier des éléments:
<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>