Domanda

Ho definito un tipo di contenuto "link correlati" e impostato erehets = "false" e ha aggiunto la riga per rimuovere il campo "Titolo" fuori dalla scatola perché non lo voglio mostrare nella vista o nuovo/Modifica/ Visualizza i moduli, vedere (Opzione 1) in CAML di seguito.

<?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>

Ciò rimuove il campo "Titolo" dal tipo di contenuto, ma quando provo ad associare il tipo di contenuto a un elenco non visualizza il campo "LinkCategory" nei moduli Visualizza o Nuovi/Modifica/Visualizza. Perché è così?

<?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>

Come un lavoro intorno ho impostato erehets = "true" sul tipo di contenuto e usato (opzione 2) nel tipo di contenuto cam approccio da prendere. Grazie in anticipo!

PS: questo post ha una domanda simile: SharePoint 2010: RemoveFieldRef e Inherits = "True"

PSS: quando navigo tramite SP Manager 2010 dopo aver distribuito l'opzione 1, ottengo quanto segue:

  • Campo "categoria di collegamento" creato correttamente
  • Tipo di contenuto "collegamenti correlati" creato correttamente con il campo "categoria collegamento"
  • Elenco "collegamenti correlati" creato con tipo di contenuto "collegamenti correlati" associato
  • Tuttavia, l'elenco dei "collegamenti correlati" non ha riferimento al campo "categoria di collegamenti".
È stato utile?

Soluzione

Ok, quindi stavo andando sul sentiero del giardino ...

Il problema per cui il campo "categoria di collegamenti" non veniva creato nell'elenco "link correlati" non era correlato all'impostazione di eredi = "false", era perché non l'avevo definito nello schema di elenco anche se lo avevo definito Nel tipo di contenuto. Come menzionato qui:

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

Quando la Fondazione SharePoint crea un'istanza dell'elenco, include solo quelle colonne dichiarate nello schema del tipo di base dell'elenco o nello schema della lista. Se si fa riferimento a un tipo di contenuto del sito nello schema dell'elenco e che il tipo di contenuto fa riferimento alle colonne del sito che non sono incluse nello schema del tipo di base dell'elenco o nello schema di elenco, tali colonne non sono incluse. È necessario dichiarare quelle colonne nello schema dell'elenco per la Fondazione SharePoint per includerle nell'elenco.

E qui:

http://stefan-stanev-sharepoint-blog.blogspot.com/2010/03/contentttypebinding-vs-contentttyperef.html

Una cosa brutta al riguardo è che si specifica un tipo di contenuto del sito da allegare all'elenco in base alla definizione dell'elenco, ma il framework non fornisce i campi nel tipo di contenuto se mancano nell'elenco, quindi è necessario aggiungere Manualmente tutti i campi del tipo di contenuto nell'elemento campi del file dello schema dell'elenco. Questo è in realtà quello che ho chiamato il problema della ridefinizione dei campi ...

Quindi elemento di campo duplicato di seguito dalla definizione del tipo di contenuto per elencare lo schema:

    <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>

Posso confermare che usando ENHERITS = "FALSE" e <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" /> rimuove il campo del titolo.

Ecco un altro buon link su Inherits = "False" per coloro che inciampano in questo post.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top