文档库中缺少内容类型的列

时间:2015-01-19 20:10:14

标签: sharepoint-2013

当我将一种内容类型分配给文档库时,库列列表中缺少此内容类型中定义的最后一列。它被定义为

<Field
   Type="Choice"
   DisplayName="Document Class"
   EnforceUniqueValues="FALSE"
   Indexed="FALSE"
   MaxLength="255"
   Group="Project Site Columns"
   ID="{xxx...x}"
   StaticName="prj_document_class"
   Name="prj_document_class"
   ShowInNewForm="FALSE"
   ShowInEditForm="FALSE"
   ShowInDisplayForm="TRUE"
   ShowInViewForms="FALSE"
   ShowInListSettings="FALSE"
   ShowInFileDlg="FALSE"
   ShowInVersionHistory="TRUE">
   <CHOICES>
      <CHOICE>Public</CHOICE>
      <CHOICE>Private</CHOICE>
   </CHOICES>
</Field>

在内容类型定义中,该列被引用为

<FieldRefs>
   ...
   <FieldRef
      ID="{xxx...x}"
      DisplayName="Document Class"
      Required="FALSE"
      Name="prj_document_class"
      Sortable="FALSE" />
</FieldRefs>

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您是否已将FieldRef添加到列表的Views中的Schema.xml

检查列表的内容类型是否已包含必填字段。 (使用Sharepoint Manager或Powershell)

对于powershell,请尝试以下方法:

$web = Get-SPWeb *site-url*
$list = $web.GetList(*list-url*)
$list.ContentTypes[*reqiured-content-type-index*].Fields.ContainsField(*field-name*)

如果此函数返回true,则很可能您的字段不在所需的视图中。

如果此函数返回false,请尝试将字段添加到内容类型。转到列表设置 - &gt;管理内容类型。选择“从网站列添加字段&#39;”。如果您的字段确实已添加到网站列,则可以添加该字段。在您所在领域的Elements.xml中指定的群组中找到它。

如果您在测试环境中尝试update a content type,并且可以丢失与此内容类型相关联的delete all的所有数据lists。然后选中both Recycle bins并清除所有instances of your list and elements of that list。然后是deactivate your feature。检查网站内容类型和列your content type and columns must have disapeared。只有在此之后你应该uninstall old solution and install new one.

也可以update a content type with out losing all of the data,但它有点棘手。我知道的最好的方法是再创建一个功能,这将是您的旧功能更新程序。为新功能制作事件接收器,并在FeatureActivated方法内使用AddFieldAsXml SPFieldCollection方法将新列添加到您的网站列,内容类型,列表和列表的内容类型}(https://msdn.microsoft.com/en-us/library/office/ms457586.aspx

我真的希望这会有所帮助