当我将一种内容类型分配给文档库时,库列列表中缺少此内容类型中定义的最后一列。它被定义为
<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>
我做错了什么?
答案 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)
我真的希望这会有所帮助