从Office客户端保存时,未在contenttype中设置文档ID

时间:2012-01-25 09:30:18

标签: sharepoint-2010 ms-word office-2010 sharepointdocumentlibrary contenttype

我有一个问题,我已经挣扎了很长时间。这个问题在测试环境中表现出来,但在我的开发环境中却没有。

我有一个文档库模板。在事件处理程序中,我附加了几种内容类型(所有内容类型都继承自基本内容类型,而基本内容类型又继承自Document)。基本内容类型具有自定义文档模板,以及在内容类型定义的xmldocuments中定义的事件处理程序。

在网站中启用了Doc-ID功能。

将文件上载到文档库时,会按预期为文档分配文档ID。但是,从Word保存文件时,doc-ID为空。显然,该值是在项目上设置的,因为在更改项目的内容类型之后,doc-ID会显示一个数字,表示在首次保存文件时分配了该数字。将contenttype设置回原始值时,Doc-ID仍会显示在视图中。

澄清:这不是项目内容类型的ID字段,而是SharePoint 2010中的doc-ID功能创建的Doc-ID。

在从Word中提升值时未设置此值的任何想法?

1 个答案:

答案 0 :(得分:0)

似乎该解决方案位于网站集中的基本文档内容类型中。激活document-id功能后,事件处理程序将作为xmldocuments添加到内容类型定义中。创建常规文档库时,库中的内容类型将继承此内容类型,从而获取事件接收器的副本。 我的自定义内容类型的自定义文档库不是从网站集文档内容类型继承,而是从基础文档内容类型(0x0101)继承,并且没有获得事件接收器的副本。 将xmldocuments复制到我的基本内容类型似乎可以解决问题。

<XmlDocuments>
        <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/events">
          <spe:Receivers xmlns:spe="http://schemas.microsoft.com/sharepoint/events">
            <Receiver>
              <Name>Document ID Generator</Name>
              <Synchronization>Synchronous</Synchronization>
              <Type>10001</Type>
              <SequenceNumber>1000</SequenceNumber>
              <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
              <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class>
              <Data>
              </Data>
              <Filter>
              </Filter>
            </Receiver>
            <Receiver>
              <Name>Document ID Generator</Name>
              <Synchronization>Synchronous</Synchronization>
              <Type>10002</Type>
              <SequenceNumber>1001</SequenceNumber>
              <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
              <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class>
              <Data>
              </Data>
              <Filter>
              </Filter>
            </Receiver>
            <Receiver>
              <Name>Document ID Generator</Name>
              <Synchronization>Synchronous</Synchronization>
              <Type>10004</Type>
              <SequenceNumber>1002</SequenceNumber>
              <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
              <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class>
              <Data>
              </Data>
              <Filter>
              </Filter>
            </Receiver>
            <Receiver>
              <Name>Document ID Generator</Name>
              <Synchronization>Synchronous</Synchronization>
              <Type>10006</Type>
              <SequenceNumber>1003</SequenceNumber>
              <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
              <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class>
              <Data>
              </Data>
              <Filter>
              </Filter>
            </Receiver>
          </spe:Receivers>
        </XmlDocument>
      </XmlDocuments>