2009-12-14 5 views
0

J'ai créé un champ personnalisé multicolonne et l'ai déployé dans SharePoint. Pour pouvoir utiliser les valeurs de champ de mon champ personnalisé, j'ai également déployé un récepteur d'événements pour copier les trois valeurs de mon champ personnalisé dans trois champs de texte réguliers distincts. Si les trois champs de texte n'existent pas, je les crée avec du code XML. Je m'assure également que les champs ont les bons paramètres de visibilité même si le champ existe.Les champs non vides sont vides dans le mot

Création du champ xml:

string fieldXml = string.Format("<Field ID=\"{0}\" " + 
            "Type=\"{1}\" " + 
            "Name=\"{2}\" " + 
            "StaticName=\"{2}\" " + 
            "DisplayName=\"{2}\" " + 
            "Required=\"{3}\" " + 
            "ShowInEditForm=\"TRUE\" " + 
            "ShowInNewForm=\"TRUE\" " + 
            "ShowInDisplayForm=\"TRUE\" " + 
            "ShowInListSettings=\"TRUE\" " + 
            "ShowInViewForms=\"TRUE\" " + 
            "ShowInVersionHistory=\"TRUE\" " + 
            "ShowInFileDlg=\"TRUE\"" + 
            "></Field>", 
            Guid.NewGuid(), 
            fieldType, 
            fieldName, 
            required); 

list.Fields.AddFieldAsXml(fieldXml, true, SPAddFieldOptions.Default); 

Assurez-vous que les paramètres de visibilité sur OK lorsque le champ existe déjà:

field.ShowInEditForm = true; 
field.ShowInNewForm = true; 
field.ShowInDisplayForm = true; 
field.ShowInListSettings = true; 
field.ShowInViewForms = true; 
field.ShowInVersionHistory = true; 
field.Update(); 
list.Update(); 

J'ai trouvé aucun moyen de définir la propriété ShowInFileDlg programme une fois que le domaine a été créé . Le fait est que ce code fonctionne bien jusqu'à ce que j'ouvre un document en MS Word et les trois champs de texte ont tous du texte assigné dans la liste mais dans Word ils sont vides!

Avoir quelqu'un vu cela avant, qu'est-ce que je fais mal?

+0

Résolu en utilisant l'extension docx au lieu de l'ancien doc! –

+0

Si quelqu'un a le temps cependant. Quelle est la meilleure pratique pour ajouter des champs par programme à la liste des éléments. Devrait-on les ajouter au type de contenu, à la liste ou à l'élément de liste? –

Répondre

0

Pour être en mesure d'ouvrir un champ DIP (document panneau d'information en haut dans les documents Word), vous devez ajouter la propriété SourceId sur le terrain:

SourceID="http://schemas.microsoft.com/sharepoint/v3"

Pour plus d'informations, voir here (msdn).

Questions connexes