0

我在几个服务器环境中遇到了这个问题。

我们在网站集根目录中有一个列表。在该列表的“标题”字段上创建了一个作为多值查找的网站栏。此网站栏在子网站的文档库中用作必填字段。当我们上传除 Office 2007 文档之外的任何内容时,用户会看到文档元数据填写屏幕 (EditForm.aspx?Mode=Upload),用户填写适当的数据(包括为此查找选择一个值) ),然后单击“签入”- 文档按预期签入,并填写了查找字段的值。

对于 Office 2007 文档,这将失败。用户为查找字段选择的值永远不会到达服务器 - 不会引发错误,但该字段不会与文档一起保存。我们在这些文档库上有一个事件侦听器,如果我们在单行代码运行之前检查事件侦听器方法上的传入 SPListItem,我们会看到查找字段的值为 null。

对我来说,它闻起来像一个 SharePoint 错误——但在我打电话给微软之前,有没有人看到过这个并解决了这个问题?

编辑:我在与问题相关的 SP 跟踪日志中看到的唯一条目:

CMS/Publishing/8ztg/Medium/Got List Item Version, but item was null
4

1 回答 1

1

最终不得不为此向 Microsoft 开一张票,并在 MSDN 文档中发现了一个要启动的错误。

为了获得多选查找,我们在传递给SPFieldCollection.AddFieldAsXml的 XML 中将查找字段 CAML 中的“Mult”属性设置为“true” 。然而,即使 API 不会抛出任何错误并且似乎在 UI 中工作,这与 Office 2007 和 2010 文档及其 SharePoint 集成的工作方式相冲突。

添加多选查找字段的官方支持方法是在Field CAML中使用 LookupMulti 字段类型。这样做,并将“Mult”属性设置为“true”会得到我正在寻找的结果。

“Mult”的MSDN 文档仍未针对 SP 2007 文档进行更新,可以放心地忽略它,因为它是完全错误的。

于 2010-05-28T01:49:37.073 回答