フォームコントロール(例えばフィールドイテレータ)で項目コンテンツタイプを決定する方法?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/57298

質問

私は表示方法のレンダリング方法を変更するために私のListFieldIteratorを実装しました。 項目の内容の種類に応じてフォームの動作を変更したいのですが。 しかし、コードからContentTypeIDを判別しようとすると、間違った結果が返されます。

ListFieldIterator.ListItem.ContentTypeId

SPContext.Current.ListItem.ContentTypeId
.

は常に返却

0x00C2208B8CE6E1422CADC1C521EAB2A68B

(無効なコンテンツタイプID)

SPContextクラスにプロパティloadContentTypesがありますが、SPContext.CurrentまたはFieldIterator.ItemContextにtrueに設定すると、違いはありません。

私は何をしていますか?

役に立ちましたか?

解決

contentType カスタム ListFieldIterator 実装

下記は contentType spcontext (Reflectionが使用されている)ここ)

        private SPContentType CurrentContentType
        {
            get {
                var ct = typeof(SPContext).GetProperty("ContentType", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(ItemContext, null) as SPContentType;
                return ct;
            }
        }
.

currentContentType プロパティを使用して、コンテンツタイプはカスタム listFieldIterator 実装。

他のヒント

コンテンツタイプを決定する唯一の方法は、HTTPクエリ文字列を解析することです:

new SPContentTypeId(this.Context.Request.QueryString["ContentTypeId"])
.

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top