예, 목록 스키마를 업데이트하면 이미 만들어진 목록에 반영되지 않습니다. 이를 위해 스키마에 FeatureActivated
이벤트 처리기를 추가하십시오. 이 이벤트 핸들러는 기능을 활성화 할 때마다 코드를 실행합니다.
이미 작성된 목록 이름을 포함하는 XML 구성 파일을 피처에 작성하십시오. 코드는 XML 파일을 읽고 이미 생성 된 목록을 업데이트합니다.
확장 성 및 유연성을 위해이 코드는 가능한 한 방어 적이어야합니다. 예를 들어, 나중에 다시 기능을 다시 활성화하면 다시 변경하지 않아야 변경 사항이 손실되거나 중복됩니다. 먼저 확인한 다음 변경 만하십시오.
동일한 구성표를 콘텐츠 유형에 사용할 수 있습니다. 필요한 경우 코드 스 니펫을 게시 할 수 있습니다.
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
try
{
// Fix the Article Date column
if (properties != null)
{
FixArticleDate(properties);
}
// Fix Metadata Tagging site columns by setting CustomField "MetadataType" to the Default value set in the field definition manifest file.
if (properties != null && properties.Feature.Properties["FixMetadataTagging"] != null)
{
RepairMetadataTaggingSiteColumns(properties);
}
// Fix Lookup site columns by retrieving lookup list GUID from List="url".
if (properties != null && properties.Feature.Properties["FixListTagging"] != null)
{
RepairListTaggingSiteColumns(properties);
}
// Fixing Site Columns
if (properties != null && properties.Feature.Properties["FixSiteColumns"] != null)
{
RepairSiteColumns(properties);
}
}
catch (SPException sharepointEx)
{
ExceptionManager.LogError(ULSTracerCategoriesEnum.FeatureReceivers, sharepointEx);
}
}
XML :
<?xml version="1.0" encoding="utf-8" ?>
<Feature Id="A23990CF-C35D-4771-BF5A-916C304C9EF9"
Title="Content Types"
Description="This Feature Creates all the Required Content Types and site columns"
Version="1.0.0.0" Scope="Site" Hidden="FALSE"
ReceiverAssembly="xxxx, Version=1.0.0.0, Culture=neutral, PublicKeyToken=86597c5d57921943"
ReceiverClass="xxxx.SharePoint.UI.Core.FeatureReceivers.CoreFeatureReceiver"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="SiteColumns\SiteColumns.xml" />
<ElementManifest Location="ContentTypes\ContentTypes.xml" />
</ElementManifests>
<Properties>
<Property Key="FixMetadataTagging" Value="SiteColumns\MetadataTaggingSiteColumnsManifest.xml"/>
<Property Key="FixListTagging" Value="SiteColumns\ListTaggingSiteColumnsManifest.xml"/>
<Property Key="FixSiteColumns" Value="ContentTypeFixes\SiteColumnAdditions.xml"/>
</Properties>
</Feature>
은 조각/코드 예제 내가 수리-방법에 내가 필드 누락을 발견하고이를 추가해야합니다 추측 주어진 코드 : 가능 – keysersoze
하면 좋은 것 MySPList.Fields.Add를 사용하여? – keysersoze
네, 기본적으로 원하는 것은 무엇이든간에. 필드 이름과 같이 xml에 데이터를 넣고 코드에서 읽고 작업을 수행하십시오. 수비가 확실한지 확인하십시오. 같은 필드를 반복해서 추가하는 일이 없도록하십시오. –