我在多个服务器环境中遇到此问题。
我们在网站集根目录中有一个列表。在该列表的标题字段上创建了一个站点列作为多值查找。此站点列在子网站中的文档库中用作必填字段。当我们上传Office 2007文档以外的任何内容时,会向用户显示文档元数据填充屏幕(EditForm.aspx?Mode = Upload),用户会填写相应的数据(包括为此查找选择一个值) ),点击“签入” - 文档按预期签入,填写了查找字段的值。
使用Office 2007文档时,此操作失败。用户为查找字段选择的值不会进入服务器 - 不会抛出任何错误,但该字段不随文档一起保存。我们在这些文档库上有一个事件监听器,如果我们在运行一行代码之前检查事件监听器方法上的传入SPListItem,我们会看到查找字段的值为null。
它闻起来像是一个SharePoint漏洞 - 但在我打电话给微软之前,有没有人见过这个&解决了吗?
编辑:我在与此问题相关的SP跟踪日志中看到的唯一条目:
CMS/Publishing/8ztg/Medium/Got List Item Version, but item was null
答案 0 :(得分:1)
不得不为微软打开这张票,并在MSDN文档中发现了一个错误。
为了获得多选查找,我们在查询字段CAML中将“Mult”属性设置为我们传递给SPFieldCollection.AddFieldAsXml的XML中的“true”。但是,即使API不会抛出任何错误。似乎在用户界面中工作,这与Office 2007& 2010年文件&他们的SharePoint集成工作。
添加多选查找字段的官方支持方式是使用Field CAML中的LookupMulti字段类型。这样做,并将“Mult”属性设置为“true”会给出我正在寻找的结果。
对于SP 2007文档,“Mult”的MSDN documentation仍未更新,可以安全地忽略,因为它完全错误。