簡體   English   中英

更改自定義列表模板時更新列表

[英]Update lists when changing custom list template

我已經在Visual Studio到MOSS中創建了一個功能,一個發布站點-此功能包含一些自定義列表模板和一些使用模板定義的列表。 現在,我需要更新列表模板,這不是問題,因為它只是向我的schema.xml添加了幾行,但是我還需要一種方法來在現有列表上反映更新。

據我所知,該功能不是標准的Sharepoint,但是如何在OnActivated中以編程方式解決此問題(例如ny),遍歷列表並根據列表模板更新(刪除/添加)字段?

是的,當您更新列表架構時,它不會反映在已經創建的列表中。 為此,在您的模式中添加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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM