Sharepoint 2013 向现有内容类型添加新列

Sharepoint 2013 向现有内容类型添加新列,sharepoint-2013,content-type,Sharepoint 2013,Content Type,我在现有内容类型中添加了一列。内容类型提供了一个部署冲突解决设置为“无”的列表实例 部署后,添加新项目时,该列不显示。但是,该列显示在“库设置”的“内容类型”中 如果将“部署冲突解决”设置为“自动”,则该列将添加到新项中,但我会丢失所有数据 要使用新列更新内容类型并在列表中保留现有数据,我需要做什么 <?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/share

我在现有内容类型中添加了一列。内容类型提供了一个部署冲突解决设置为“无”的列表实例

部署后,添加新项目时,该列不显示。但是,该列显示在“库设置”的“内容类型”中

如果将“部署冲突解决”设置为“自动”,则该列将添加到新项中,但我会丢失所有数据

要使用新列更新内容类型并在列表中保留现有数据,我需要做什么

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<!-- Parent ContentType: LMS Document (LeaveManagementSystem\LMS Document) (0x010100174F5B4B857F41F5893B76351F3001CA) -->
<ContentType ID="0x010100174F5B4B857F41F5893B76351F3001CA02" Name="LMS Project Document" Group="LMS Content Types" Description="LMS Project Documents Content Type" Inherits="TRUE" Overwrite="TRUE" Version="0">
<FieldRefs>
  <FieldRef ID="{EB703A89-8495-40E8-9F42-180E57EA9F1A}" DisplayName="Name" Required="FALSE" Name="LMS_Name" />
  <FieldRef ID="{0214FB1B-051A-4861-91DA-C94324FDCD6F}" DisplayName="Start Date" Required="FALSE" Name="LMS_StartDate" Format="DateOnly" />
  <FieldRef ID="{26780D0B-4F9A-4BD5-AD56-74D625F14946}" DisplayName="End Date" Required="FALSE" Name="LMS_EndDate" Format="DateOnly" />
  <FieldRef ID="{CDD9F593-7C33-41D6-A16F-1CCD99BA3642}" DisplayName="MM Leave Type" Name="MMLeaveType" />
  <FieldRef ID="{AD3E2F37-FA57-49B1-B5DA-5B9B12F3FAAE}" DisplayName="MM Leave Type_0" Required="FALSE" Hidden="TRUE" Name="MMLeaveTypeTaxHTField0" />
  <FieldRef ID="{f3b0adf9-c1a2-4b02-920d-943fba4b3611}" DisplayName="Taxonomy Catch All Column" Required="FALSE" Hidden="TRUE" Name="TaxCatchAll" Sealed="TRUE" Sortable="FALSE" />
  <FieldRef ID="{8f6b6dd8-9357-4019-8172-966fcd502ed2}" DisplayName="Taxonomy Catch All Column1" Required="FALSE" Hidden="TRUE" Name="TaxCatchAllLabel" ReadOnly="TRUE" Sealed="TRUE" Sortable="FALSE" />
  <FieldRef ID="{8ECEC8EA-560B-40BA-A768-D438AD97DAEF}" DisplayName="Leave Comment" Required="FALSE" Name="LMS_LeaveComment" />
  <FieldRef ID="{CAC62009-5A85-4E12-BF80-661EDB9CEF55}" DisplayName="Balance" Required="FALSE" Name="LMS_Balance" />
</FieldRefs>    
<DocumentTemplate TargetName="/Test_DL/Doc1.docx" />
</ContentType>
</Elements>

根据我们的评论,我建议您通过使用PowerShell脚本在现有列表上推送更改。 另一种方法是使用功能的事件接收器

要推动变革,您必须:

  • 获取现有列表
  • 在列表中添加实用的最新列
  • 更新您的更改
本文将为您提供有关功能事件接收器的更多信息:

本文将为您提供在列表中添加现有字段的代码。


希望这有助于更新现有列表中使用的内容类型通常需要一些PowerShell来推动更改。自动解决方案只是删除并重新创建列表以推动更改,这有点令人震惊。:)在激活功能的过程中是否有非PowerShell方法?您可以使用功能的事件接收器。但这不是一个最佳实践。但对于我来说,开始使用事件接收器“更容易”一些,因为代码在FeatureActivated中没有任何作用。我在“网站内容类型”中看到了所有字段,但在列表中看不到。请澄清,您是否在“设置”列表中看到了该字段?在网站设置的内容类型中?是。我可以看到网站设置内容类型中的所有字段。