Question

J'ai défini un type de contenu «liens liés» et défini iNherits = «false» et ajouté une ligne pour supprimer le champ «Title» hors de la boîte car je ne veux pas qu'il affiche dans la vue ou nouveau / edit / Afficher les formulaires, voir (option 1) dans CAML ci-dessous.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

    <!-- ===== Fields ===== -->
    <!-- Link Category -->
    <Field DisplayName="Link Category"
           Name="LinkCategory"
           ID="{654EAC00-342B-4176-9D91-613AD724F684}"
           Group="Custom"
           Overwrite="True"
           Type="Lookup"
           ShowField="Title"
           List="Lists/LinkCategoryList"
           WebId="~sitecollection" />

    <!-- ===== Content Type ===== -->
    <!-- 
    Related Links
     - Parent ContentType: Item (0x01)
    -->
    <ContentType Name="Related Links"
                 ID="0x0100c11a1db14e564574bc49a2aa9bf325d3"
                 Group="Custom"
                 Description=""
                 Inherits="False"
                 Version="0">
        <FieldRefs>
            <!-- Title (OPTION 1) -->
            <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />
            <!-- (OPTION 2)
            <FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" 
                      Hidden="TRUE" Required="FALSE" DisplayName="_hidden" />
            -->
            <!-- Link Category -->
            <FieldRef DisplayName="Link Category"
                      Name="LinkCategory"
                      ID="{654EAC00-342B-4176-9D91-613AD724F684}"
                      Required="True" />
        </FieldRefs>
    </ContentType>

</Elements>

Cela supprime le champ «Title» du type de contenu, mais lorsque j'essaie d'associer le type de contenu à une liste, il n'affiche pas le champ «LinkCategory» dans les formulaires Affichage ou nouveau / Modifier / Affichage. Pourquoi est-ce ainsi?

<?xml version="1.0" encoding="utf-8"?>
<List xmlns:ows="Microsoft SharePoint"
      Title="Related Links"
      FolderCreation="FALSE"
      Direction="$Resources:Direction;"
      Url="Lists/RelatedLinksListDefinition"
      BaseType="0"
      EnableContentTypes="True"
      xmlns="http://schemas.microsoft.com/sharepoint/">
    <MetaData>
        <ContentTypes>
            <!-- Related Links -->
            <ContentTypeRef ID="0x0100c11a1db14e564574bc49a2aa9bf325d3" />
        </ContentTypes>
        <Fields>
        </Fields>
        <Views>
            <View ...etc...>
                <ViewFields>
                    <FieldRef Name="LinkCategory"></FieldRef>
                </ViewFields>
                <Query>
                    <OrderBy>
                        <FieldRef Name="ID"></FieldRef>
                    </OrderBy>
                </Query>
            </View>
        </Views>
        <Forms>
            <Form Type="DisplayForm" Url="DispForm.aspx"
                  SetupPath="pages\form.aspx" WebPartZoneID="Main" />
            <Form Type="EditForm" Url="EditForm.aspx"
                  SetupPath="pages\form.aspx" WebPartZoneID="Main" />
            <Form Type="NewForm" Url="NewForm.aspx"
                  SetupPath="pages\form.aspx" WebPartZoneID="Main" />
        </Forms>
    </MetaData>
</List>

En tant que travail, j'ai défini iNherits = "true" sur le type de contenu et utilisé (option 2) dans le type de contenu CAML et qui masque le champ `` titre '', mais j'aimerais vraiment comprendre ce qui se passe ici et ce qui est le meilleur approche à adopter. Merci d'avance!

PS: Ce message a une question similaire: SharePoint 2010: RemovefieldRef et Hérite = "true"

PSS: Lorsque je navigue via SP Manager 2010 après le déploiement en utilisant l'option 1, j'obtiens ce qui suit:

  • Le champ de «catégorie de liens» créé correctement
  • Type de contenu «liens connexes» créé correctement avec le champ «Catégorie de liens»
  • Liste des «liens connexes» créés avec le type de contenu «liens connexes» associé
  • Cependant, la liste des «liens connexes» n'a aucune référence au champ «Catégorie de liens».
Était-ce utile?

La solution

Ok donc était en train de monter sur le chemin du jardin ...

Le problème du champ `` Catégorie des liens '' n'était pas créé sur la liste des «liens connexes» n'était pas lié à la définition des hérits = «false», c'est parce que je ne l'avais pas défini dans le schéma de la liste même si je l'avais défini dans le type de contenu. Comme mentionné ici:

http://msdn.microsoft.com/en-us/library/aa543576.aspx

Lorsque SharePoint Foundation crée une instance de liste, il ne comprend que les colonnes qui sont déclarées dans le schéma de type de base de la liste ou du schéma de liste. Si vous faites référence à un type de contenu dans le schéma de liste et que le type de contenu fait référence aux colonnes du site qui ne sont pas incluses dans le schéma de type de base de la liste ou du schéma de liste, ces colonnes ne sont pas incluses. Vous devez déclarer ces colonnes dans le schéma de liste pour la Fondation SharePoint pour les inclure sur la liste.

Et ici:

http://stefan-stanev-sharepoint-blog.blogspot.com/2010/03/contentTypebinding-vs-ContentTyperef.html

Une chose laide à ce sujet est que vous spécifiez un type de contenu de site à attacher à la liste en fonction de cette définition de la liste, mais le cadre ne fournit pas les champs du type de contenu s'ils sont manquants dans la liste - vous devez donc ajouter Manuellement tous les champs du type de contenu dans l'élément champs du fichier de schéma de liste. C'est en fait ce que j'ai appelé le problème de redéfinition des champs ...

Donc, élément de champ dupliqué ci-dessous de la définition de type de contenu à la liste du schéma:

    <Fields>
        <Field DisplayName="Link Category"
               Name="LinkCategory"
               ID="{654EAC00-342B-4176-9D91-613AD724F684}"
               Group="Custom"
               Overwrite="True"
               Type="Lookup"
               ShowField="Title"
               List="Lists/LinkCategoryList"
               WedId="~sitecollection" />
    </Fields>

Je peux confirmer que l'utilisation d'Hérits = "false" et <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" /> Supprime le champ de titre.

Voici un autre bon lien sur les hérits = "false" pour ceux qui tombent sur ce post.

https://sharepoint.stackexchange.com/questions/2995/mysteries-of-the-cantype-inherits-attribute

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top