Да, когда вы обновляете схему списка, она не будет отражаться в уже созданном списке.Для этого добавьте обработчик событий 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>