フォームコントロール(例えばフィールドイテレータ)で項目コンテンツタイプを決定する方法?
-
10-12-2019 - |
質問
私は表示方法のレンダリング方法を変更するために私の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"])
. 所属していません sharepoint.stackexchange