none
Lier custom field type au un type de contenu RRS feed

  • Question

  • Bonjour,

    Voila j'ai développer un type de colone personnel qui permet a l'utilisateur de séléctionner une bibliothéque de document dans toute la farm sharepoint.

    Le but de cet collone est d'y associer un evenement lors de la création qui copirais le fichier crée dans la bibliothèque séléctionnée précédement.

    J'ai pour cela crée une feature qui deploie une nouvelle définition de liste ("bibliothéque de document commun" basé sur la liste de type "librairie de document".

    J'aimerais que lorsque ce dérnier crée une "bibliothéque de document commun", il se creer directement deux colonnes appartenant aux type de colonne personel que j'ai crée.

    J'arrive a définir dans le fichier "schema.xml" des colonnes personnels simples mais je n'arrive pas a me basé sur le type de colonne que j'ai précédement crée....

    comment pourrais-je faire?
    mercredi 17 mars 2010 14:33

Réponses

  • Caaaa y est ca marche :)

    je ne sais absolument pas pourquoi je n'arrivais pas a lier mes deux features mais en me servant d'un projet codeplex jai pus modifier mon content type pour qu'il puisse se servir de ma definition de colonne perso...

     

    Seulement me voila confronté a un nouveau probléme ( et oui, sinon ce serais trop facile); c'est qu'il me faut récuperer la valeur de mes deux colonnes perso dans un event handler pour pouvoir copier le fichier crée dans celles-ci...

    On réfléchi un peut et on trouve le moyen de récuperer le nom de la bibliothéque choisi... seulement je ne sais pas comment récuperer le type de l'objet ajouter ( en effet il me faut vérifier si c'est un document ou un dossier).

    Si vous avez une idée de comment faire, car je n'est jamais developpé d'evenement.

    Cdlt

    • Marqué comme réponse Dieudonné mardi 30 mars 2010 08:12
    mardi 23 mars 2010 13:33

Toutes les réponses

  • Voila J'ai un peu avancer, j'ai donc choisi de creer un type de contenu que j'essairais d'assotier a l'évenemment de création de ma bibliotheque commune.

    Au niveau du type de contenu je défini dans mon fichier élément.xml les deux colonnes pérso dont j'ai besoin....
    J'ai compris qu'il fallais, dans la balise <Type=""> renseigner le nom de mon type de colonne pérso précedement créer (j'ai crée celui-ci dans le fichier: "TEMPLATE\XML\FLDTYPES_DocumentLink.xml" .

    Seulement je n'arrive pas a référencer mon type de colonne pérso...
    Voici mon code:

    Fichier element.xml:

    <?xml version="1.0" encoding="utf-8" ?>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
      <ContentType ID="0x010100D2B4B66B2803444681A171D8DBA2A311"  
                   Name="CommonDocument"  
                   Group="CustomDocumentLibrary"  
                   Description="Permet a l'utilisateur de creer un document partager"  
                   Version="0">
        <FieldRefs>
           <FieldRef ID="{42C23784-2A4F-401c-B7B8-2E1A83353DA2}"  Name="FirstCommonDocumentLibrary"   />
           <FieldRef ID="{986D5F09-2397-42b6-94D3-36CC4E84102E}"  Name="SecondCommonDocumentLibrary"   />
        </FieldRefs>
      </ContentType>
      <Field ID="{42C23784-2A4F-401c-B7B8-2E1A83353DA2}"
             Name="FirstCommonDocumentLibrary"
             StaticName="First Common Document Library"
             DisplayName="First Common Document Library"
             Type="/FLDTYPES_DocumentLink/DocumentLink"//mon pbl ce situe ici
             Required="True"> 
      </Field>
      <Field ID="{986D5F09-2397-42b6-94D3-36CC4E84102E}"
           Name="SecondCommonDocumentLibrary"
           StaticName="Second Common Document Library"
           DisplayName="Second Common Document Library"
           Type="/FLDTYPES_DocumentLink/DocumentLink" //mon pbl ce situe ici
           Required="True">
      </Field>
    </Elements>
    jeudi 18 mars 2010 10:03
  • Bonjour,

    il faudrait vérifier que l'attribut Type de vos balises <Field> a la même valeur que le typename déclaré dans TEMPLATE\XML\FLDTYPES_DocumentLink.xml.

    Donc si vous avez quelquechose comme ça dans TEMPLATE\XML\FLDTYPES_DocumentLink.xml ...

    <FieldTypes>
    <FieldType>
    		<Field Name="TypeName">DocumentLink</Field>
    		<Field Name="ParentType">Text</Field>
    		<Field Name="TypeDisplayName">Document lié</Field>
    		<Field Name="TypeShortDescription">Document lié</Field>
    		<Field Name="UserCreatable">TRUE</Field>
    		<Field Name="ShowInListCreate">TRUE</Field>
    		<Field Name="ShowInSurveyCreate">TRUE</Field>
    		<Field Name="ShowInDocumentLibraryCreate">TRUE</Field>
    		<Field Name="ShowInColumnTemplateCreate">TRUE</Field>
    		<Field Name="FieldTypeClass">MonAssembly.MonFieldType, MonAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxxx</Field>
    	</FieldType>
    </FieldTypes>

    ... il faut utiliser Type="DocumentLink" dans la balise <Field> (J'ai notamment peur que le caractère "/" de votre exemple pose problème)

    Est-ce que cela résoud votre problème ?


    http://blogs.developpeur.org/anouvel
    Merci de valider les réponses qui correspondent à votre problème afin qu'il apparaisse comme résolu.
    dimanche 21 mars 2010 10:39
  • Bonjour et merci pour votre réponse...

    Mon code semble correct :

    <?xml version="1.0" encoding="utf-8"?>
    <FieldTypes>
    	<FieldType>
    		<Field Name="TypeName">DocumentLink</Field>
    		<Field Name="InternalType">Text</Field>
    		<Field Name="ParentType">Text</Field>
    		<Field Name="TypeDisplayName">Common Library</Field>
    		<Field Name="TypeShortDescription">Common Library</Field>
    		<Field Name="UserCreatable">TRUE</Field>
    		<Field Name="ShowInListCreate">TRUE</Field>
    		<Field Name="ShowInSurveyCreate">TRUE</Field>
    		<Field Name="ShowInDocumentLibraryCreate">TRUE</Field>
    		<Field Name="ShowInColumnTemplateCreate">TRUE</Field>
    		<Field Name="FieldTypeClass">DocumentLink.DocumentLnk,DocumentLink, Version=1.0.0.0, Culture=neutral, PublicKeyToken=739434e87c9ca6ae</Field>
    		<Field Name="FieldEditorUserControl">/_controltemplates/DocumentLinkEditorControl.ascx</Field>
    		
    		<RenderPattern Name="DisplayPattern">...//mon render pattern
    					</RenderPattern>
    		
    		<PropertySchema>
    			<Fields>
    				<Field Name="LimitToCurrentSite" Type="Boolean" Hidden="TRUE">
    				</Field>
    			</Fields>
    		</PropertySchema>
    	</FieldType>
    </FieldTypes>
    
    
    
    Et avant de poster ce message j'ai bien essayais d'utiliser Type="DocumentLink" dans la balise <Field> mais rien a faire; mon type de colonne personnel n'est pas reconnue... 
     Ps:par contre si je definni dans mon type de contenue une colonne simple (de type texte par exemple) il n'y a aucun probleme elle apparait bien.
    Si vous avez d'autres suggestions a me proposer je suis preneur :)
    lundi 22 mars 2010 08:28
  • Caaaa y est ca marche :)

    je ne sais absolument pas pourquoi je n'arrivais pas a lier mes deux features mais en me servant d'un projet codeplex jai pus modifier mon content type pour qu'il puisse se servir de ma definition de colonne perso...

     

    Seulement me voila confronté a un nouveau probléme ( et oui, sinon ce serais trop facile); c'est qu'il me faut récuperer la valeur de mes deux colonnes perso dans un event handler pour pouvoir copier le fichier crée dans celles-ci...

    On réfléchi un peut et on trouve le moyen de récuperer le nom de la bibliothéque choisi... seulement je ne sais pas comment récuperer le type de l'objet ajouter ( en effet il me faut vérifier si c'est un document ou un dossier).

    Si vous avez une idée de comment faire, car je n'est jamais developpé d'evenement.

    Cdlt

    • Marqué comme réponse Dieudonné mardi 30 mars 2010 08:12
    mardi 23 mars 2010 13:33