非空字段在字中为空
问题描述:
我已创建多列自定义字段并将其部署到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中它们是空的!
有没有人看过这个,我做错了什么!?
答
为了能够在DIP(在word文档上的文档信息面板)打开一个领域,你需要到的sourceID属性添加到域:
SourceID="http://schemas.microsoft.com/sharepoint/v3"
欲了解更多信息,请参阅here( MSDN)。
通过使用docx扩展而不是旧文档来解决它! – 2009-12-14 15:22:40
如果有人有时间。关于以编程方式向列表项添加字段的最佳做法是什么?是否应该将它们添加到内容类型,列表或列表项目中? – 2009-12-14 15:24:11