Comment faire pour déterminer l'élément ContentType dans FormControl (FieldIterator par exemple)?

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

Question

J'ai mis en place mon ListFieldIterator à changer la façon dont le champ des contrôles rendus.J'aimerais changer le comportement de la forme en fonction de l'élément de type de contenu, mais toutes les tentatives pour déterminer ContentTypeId du code renvoie un résultat incorrect.

ListFieldIterator.ListItem.ContentTypeId

SPContext.Current.ListItem.ContentTypeId

sont toujours de retour

0x00C2208B8CE6E1422CADC1C521EAB2a68b

(ce qui n'est pas valide id du type de contenu)

Il y a une propriété LoadContentTypes dans SPContext classe, mais la définition d'-il VRAI pour SPContext.Current ou FieldIterator.ItemContext ne fait aucune différence.

Ce que je fais mal?

Était-ce utile?

La solution

En plus de la méthode de détermination de ContentType dans la coutume ListFieldIterator de chaîne de requête, ItemContext contient de la propriété ContentType.Mais cette propriété est à l'intérieur et ne pouvait donc pas être utilisés directement dans des ListFieldIterator la mise en œuvre.

Ci-dessous est présenté wrapper pour retriving ContentType basé sur la propriété correspondante pour SPContext (La réflexion est utilisé ici)

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

À l'aide de CurrentContentType de propriété, type de contenu peut être déterminé dans la coutume ListFieldIterator la mise en œuvre.

Autres conseils

La seule façon que j'ai trouvée pour déterminer le type de contenu dans cette affaire est à l'analyse de chaîne de requête HTTP:

new SPContentTypeId(this.Context.Request.QueryString["ContentTypeId"])
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top