2011-02-10 14 views
3

SharePoint 2010ビルドには、キーワード用の管理されたメタデータフィールドを含むカスタムコンテンツタイプがあります。SharePoint 2010 EditModePanelで正しい分類法コントロールを表示するにはどうすればよいですか?

フィールドは配置されているようです。なぜなら、リスト内の項目を編集すると、正しい分類法選択コントロールが得られ、用語が用語ストアから取得されるからです。

ただし、 ItemのPageLayoutでEditModePanelを使用してアイテムのサイト内編集を許可しているため、正しいTaxonomy Pickerコントロールが表示されません。

私はTaxonomyWebTaggingControlをページレイアウトに追加し、SSPIdなどをハードコードすると動作します。

<TaxonomyControls:TaxonomyWebTaggingControl runat="server" SSPId="234234-234234-34341-343" TermSetId="234234-23342-34234-234-234"/> 

ただし、クライアントがサイトを展開するときに用語ストアが作成されるため、値をハードコードすることはできません。

コンテンツタイプを作成すると、そのフィールドを正しいTerm Store/SetにバインドするEvent Receiverがありますが、EditModePanelでフィールドを取得して取得/設定する方法はわかりません。以下のようなもの

私が本当に欲しいれる:

<TaxonomyControls:TaxonomyWebTaggingControl runat="server" TermStore="My term store name" TermSet="Keywords"/> 

私は何かが足りないのですか?

マイイベントレシーバは、次のようになります。

try 
     { 
      SPSite site = ((SPWeb)properties.Feature.Parent).Site as SPSite; 

      Guid fieldId = new Guid("3211B052-5332-424C-A066-BBE21AEAB878"); 
      if (site.RootWeb.Fields.Contains(fieldId)) 
      { 
       TaxonomySession session = new TaxonomySession(site); 

       if (session.TermStores.Count != 0) 
       { 
        var termStore = session.TermStores["Managed Metadata Service"]; 
        var group = termStore.Groups.GetByName("My Client"); 
        var termSet = group.TermSets["Keywords"]; 

        TaxonomyField field = site.RootWeb.Fields[fieldId] as TaxonomyField; 

        field.SspId = termSet.TermStore.Id; 
        field.TermSetId = termSet.Id; 
        field.AnchorId = Guid.Empty; 
        field.AllowMultipleValues = true; 
        field.TextField = fieldId; 
        field.TextField = new Guid("{574C5BCE-74E8-40C8-BE90-C9338135D491}"); 
        field.Update(); 
        Log.Logger.LogEvent("ContentType Activation", "Updated keywords field with MMS details"); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      Log.Logger.LogException(ex, "Content Type Activation", ex.Message); 
     } 

答えて

3

あなたはこのためにTaxonomyFieldControlを使用する必要があります。私はTaxonomyFieldControlを使用するために私のページのレイアウトを修正しました

<%@ Register Tagprefix="Taxonomy" Namespace="Microsoft.SharePoint.Taxonomy" Assembly="Microsoft.SharePoint.Taxonomy, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<Taxonomy:TaxonomyFieldControl FieldName="My Field Name" runat="server" id="myField"/>

+0

無効になっている/グレー表示されているように見え、タグアイコンをクリックしても何も起こりませんか? –

+0

あなたのフィールドはMMS SAに正しく接続されていますか? –

+0

それは、私のイベントレシーバーのコードを元の投稿に追加したようです。私はデバッガでこれを踏んできましたが、それはエラーではありません。 –