非空字段在字中为空

时间:2009-12-14 14:24:40

标签: c# xml sharepoint ms-word spfield

我创建了一个多列自定义字段并将其部署在SharePoint中。为了能够使用自定义字段中的字段值,我还部署了一个事件接收器,将三个值从我的自定义字段复制到三个单独的常规文本字段。如果三个文本字段不存在,我在代码中使用XML创建它们。即使字段存在,我也确保字段具有正确的可见性设置。

在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);

当字段已存在时,确保可见性设置正常:

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

创建字段后,我发现无法以编程方式设置ShowInFileDlg属性。

问题是这个代码很有用,直到我在MS Word中打开一个文档,并且三个文本字段都在列表中分配了文本但在Word中它们是空的!

以前有人见过这个,我做错了什么!?

1 个答案:

答案 0 :(得分:0)

为了能够在DIP中打开字段(word文档顶部的文档信息面板),您需要将SourceId属性添加到字段中:

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

有关详细信息,请参阅here(msdn)。