IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Sharepoint .NET Discussion :

SP2010 - CustomAction - Bouton dans le ribbon à masquer


Sujet :

Développement Sharepoint .NET

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 49
    Points
    49
    Par défaut SP2010 - CustomAction - Bouton dans le ribbon à masquer
    Salut tout le monde !!

    J'ai ajouté via une CustomAction un bouton dans le ribbon, qui est affiché pour le moment uniquement sur des bibliotheques de document.

    J'aimerai pouvoir afficher le bouton uniquement pour une bibliotheque de doc particulière.

    J'ai vu qu'il fallait utiliser des HideCustomAction, mais impossible à comprendre...

    Du coup pour le moment, je grise le bouton, mais bon, c'est pas ce que je veux...

    Si quelqu'un a une idée... je suis preneur !!

    Merci

  2. #2
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Bonjour,

    J'ai vu qu'il fallait utiliser des HideCustomAction, mais impossible à comprendre...
    Faux. On utilise cela pour masquer des composants du ribbon, mais ce n'est pas ce que tu veux.

    Ce que tu veux, exactement, c'est afficher-mon-bouton-pour-ma-doc-lib-à-moi.


    Pour cela, on utilise l'attribut RegistrationId et RegistrationType.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <CustomAction Id="MonID"   
                  Location="CommandUI.Ribbon"   
                  RegistrationId="101"   
                  RegistrationType="List">  
     
    </CustomAction>
    Ici on dit qu'on veut que le bouton s'affiche dans une Liste qui a template id 101. c'est à dire les listes de types Custom list.

    La liste est standard ou provisionné par tes soins?
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    C'est exactement ce que j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?xml version="1.0" encoding="utf-8"?>
     
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
      <CustomAction Id="TransfertDBButton" Location="CommandUI.Ribbon" RegistrationId="101" RegistrationType="List"
        Title="Copy Documents">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition
            Location="Ribbon.Documents.Manage.Controls._children">
              <Button Id="Ribbon.Documents.Manage.CopyDocuments"
              Command="TransfertDBButtonCommand"
              LabelText="Envoyer vers le système central"
              Image32by32="/_layouts/images/PPEOPLE.GIF"
              TemplateAlias="o1" />"
            </CommandUIDefinition>
          </CommandUIDefinitions>
          <CommandUIHandlers>
            <CommandUIHandler
     
            Command="TransfertDBButtonCommand"
            CommandAction="javascript:
     
            var mavar;
            var MonTableau = new Array();
            var context = SP.ClientContext.get_current();
            var web = context.get_web();
            context.load(web);
            var currentlibid = SP.ListOperation.Selection.getSelectedList();
            var currentLib = web.get_lists().getById(currentlibid);
            var selectedItems = SP.ListOperation.Selection.getSelectedItems(context);
     
            for(var i in selectedItems)
            {
              MonTableau[i] = selectedItems[i].id;
            }
     
            alert('Envoi vers le système central');
            __doPostBack('RecordEvent',MonTableau)
            "
     
            EnabledScript="javascript:
            var EnableDisable = function()
            { 
              var url = self.location.href;
     
              if (url.indexOf('CRI_Non_transmis.aspx', 0 ) != -1 )
              {
                  return 1;
              }
              return 0;
            };
            EnableDisable();
            " />
     
          </CommandUIHandlers>
        </CommandUIExtension>
      </CustomAction>
     
    </Elements>
    Sauf que le bouton s'affiche pour toutes les "document librarie", et moi je voudrais l'afficher uniquement pour UNE document librarie particulère, 'CRI_Non_transmis.aspx' dans mon cas.
    J'arrive a griser le bouton mais pas a le faire disparaitre.

    Merci de ta réponse

  4. #4
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Je te confirme que RegistrationId="101" et RegistrationType="List" sont à utilisé pour afficher uniquement (pas juste pour griser par ex) pour une liste particulière.

    En fait, précisément, c'est pas pour une liste, mais pour un templatede liste. Le template étant "RegistrationId".

    Pour cela, tu dois ajouter une nouvelle liste à ta solution (via visual studio). Tu fais "Add New List Template Definition", dans le TemplateId, tu devra mettre une valeur (ex : 10001) et cette valeur tu devra la recopier dans RegistrationId
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

  5. #5
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 49
    Points
    49
    Par défaut
    Pas mal du tout ce principe et ca marche !!!

    Seulement....
    En gros, j'avais une biblio de doc "CRI", sur lequel je ne faisais rien.

    J'ai créé une vues à partir de cette biblio "CRI_NonTransmis".

    La liste CRI se rempli via un formulaire Infopath.
    Donc l'autres listes (qui est une vue) se remplit seule aussi.

    En créant un nouveau type de liste "CRI_NonTransmis", comment puis faire pour récupérer les données de la liste "CRI" pour les copier (selon des critères de valeur) dans mon nouveau type "CRI_NonTransmis" ?

    J'espère que je suis compréhensible


    MERCI !!

  6. #6
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    OUlaaa non pas compris


    Déjà, un truc qui me choque, c'est ca :

    Donc l'autres listes (qui est une vue) se remplit seule aussi.
    Les vues ne sont pas des listes, se sont des vues (Oui dit comme ca c'est bof )

    Une vue est juste un ensemble de choix de colonnes / filtres / ordonnances des colonnes / group by. C'est la même liste.
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

  7. #7
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 49
    Points
    49
    Par défaut
    Ok, je vais essayer d 'etre plus clair.

    J'ai une liste "CRI" et j'ai créé une vue a partir de celle ci "CRI non transmis".
    Le bouton dans le ribbon doit etre dans "CRI non transmis" et pas ailleurs.

    Donc j'ai fait comme tu m'as dit tout a l heure, c'est à dire, j'ai créé un nouveau type de liste (depuis Visual studio).

    Maintenant mon nouveau probleme est de savoir comment copier/déplacer les éléments qui sont dans ma vue "CRI non transmis" dans mon nouveau type de liste ?

    La solution a laquelle j'ai pensé, c'est de faire une webpart qui va, a chaque chargement de la page, copier tous les éléments de "CRI" dans ma liste (de nouveau type), avec un critère sur un champs (transmis/non transmis).

    A ce moment là, je n'aurais que les éléments non transmis dans ma liste de nouveau type.

    Mais peut etre que je réinvente la roue et que ca existe déja ?!?

  8. #8
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    J'ai une liste "CRI" et j'ai créé une vue a partir de celle ci "CRI non transmis".
    C'est toujours la même liste, donc c'est la que je comprends pas, ce n'est parce que tu ne vois plus le même nombre d'éléments qu'ils ne sont plus la, il ne sont juste pas affiché tout simplement.


    Maintenant mon nouveau probleme est de savoir comment copier/déplacer les éléments qui sont dans ma vue "CRI non transmis" dans mon nouveau type de liste ?
    Si tu veux le faire à la main, tu peux le faire en mode "Feuille de données", il faut avoir installer Office avec le composant Access, et tu pourra faire un copier coller massif de tes données d'une liste à une autre.

    Sinon, tu peux dans Visual Studio, indique un certain nombre de lignes par defaut via un item List Instance, et les sous noeud <Data /> qui vont généré la liste + des éléments.
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

  9. #9
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Lapinpanda Voir le message
    C'est toujours la même liste, donc c'est la que je comprends pas, ce n'est parce que tu ne vois plus le même nombre d'éléments qu'ils ne sont plus la, il ne sont juste pas affiché tout simplement.
    Oui j'ai compris
    Je disais juste que j'avais créé une vue, pas que c'était 2 listes différentes.

    Citation Envoyé par Lapinpanda Voir le message
    Si tu veux le faire à la main, tu peux le faire en mode "Feuille de données", il faut avoir installer Office avec le composant Access, et tu pourra faire un copier coller massif de tes données d'une liste à une autre.

    Sinon, tu peux dans Visual Studio, indique un certain nombre de lignes par defaut via un item List Instance, et les sous noeud <Data /> qui vont généré la liste + des éléments.
    Il faut cela soit fait automatiquement.
    par contre, je me pose une question, si je copie des items depuis ma liste CRI vers ma nouvelle liste (du nouveau type), et que je modifie un item dans ma liste CRI, je suppose qu'il ne sera pas modifié dans ma nouvelle liste ?

    Je sens que je m'enlise là

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur SharePoint 2010
    Inscrit en
    Juillet 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur SharePoint 2010
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 90
    Points : 68
    Points
    68
    Par défaut
    Un petit truk qui avait marché pour moi , c'est de mettre l'ID de la liste sur laquelle on veut ajouter le bouton dans RegistrationID à la place de 100 ou 101 ....

Discussions similaires

  1. Afficher / Masquer boutons dans classeur
    Par Un Internaute dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/04/2013, 12h46
  2. [AC-2003] Masquer bouton dans formulaire continu
    Par paidge dans le forum IHM
    Réponses: 1
    Dernier message: 19/11/2010, 13h57
  3. masquer un bouton dans un autre fomulaire
    Par kevinou55 dans le forum Windows Forms
    Réponses: 9
    Dernier message: 27/02/2008, 11h16
  4. Afficher / Masquer un bouton dans un formulaire
    Par Alpha31 dans le forum IHM
    Réponses: 10
    Dernier message: 30/05/2006, 12h08
  5. Réponses: 2
    Dernier message: 31/08/2002, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo