2

J'ai créé avec succès une fonctionnalité dans sharepoint qui modifie la boîte de dialogue d'édition existante et y ajoute un bouton personnalisé.Modification de la boîte de dialogue d'édition du point de partage

Modified sharepoint dialog

et je sais que je peux transmettre des données en arrière lorsque l'utilisateur clique sur le bouton personnalisé comme celui-ci.

<CommandUIHandlers> 
    <CommandUIHandler Command="ActivateUser" CommandAction="/_layouts/MyFeature/MakeUserActive.aspx?ListID={ListId}&amp;ItemID={ItemId}&amp;ItemUrl={ItemUrl}&amp;ListUrlDir={ListUrlDir}" /> 
</CommandUIHandlers> 

Comme détaillé here

Je peux maintenant gérer l'élément de liste et effectuer mes actions nécessaires à ce sujet mais étant donné que ce bouton a été ajouté dans le contexte modifier (IE: Dans la boîte de dialogue de l'élément de modifier sharepoint) Et si vous voulez enregistrer les modifications apportées aux données elles-mêmes?

Pour moi, il semble que l'utilisation de votre bouton personnalisé signifierait toujours la perte des modifications que l'utilisateur a apportées aux données. Y a-t-il un moyen de contourner ceci?

Répondre

4

Bonne question!

Vous en fait déjà lié à la solution: En ce moment, vous redirigez simplement à l'utilisateur en utilisant une URL comme commandAction: CommandAction="/_layouts/MyFeature/MakeUserActive.aspx?ListID={ListId}&amp;ItemID={ItemId}&amp;ItemUrl={ItemUrl}&amp;ListUrlDir={ListUrlDir}"

Ce cours se redirige l'utilisateur vers une autre page sans enregistrer l'entrée actuelle. Ce que vous voulez faire est d'utiliser Javascript comme lié dans l'article MSDN:

CommandAction="javascript:alert('here be dragons');" 

Vous pouvez travailler le modèle d'objet SharePoint Javascript ici et utiliser quelque chose comme SP.ListOperation.Selection.getSelectedItems(); ou vous pouvez utiliser le code complet personnalisé.
De votre nom de page ASPX je peux voir que vous voulez "faire une utilisation active" (btw: ne serait pas "ActivateUser.aspx" être plus agréable?). Si cela signifie simplement définir une propriété dans une autre liste, vous pouvez le faire avec l'OM SharePoint, s'il s'agit d'un objet personnalisé, vous aurez besoin d'un service Web que vous pouvez appeler à partir de JavaScript et "activer l'utilisateur" comme ça. Vous pouvez bien sûr toujours accéder au formulaire actuel et transmettre les valeurs que l'utilisateur a saisies. Ou vous pouvez créer un save button personnalisé qui fait des choses (activer l'utilisateur) avant de sauvegarder.

Enfin: Vous pouvez également avoir des postbacks dans votre bouton personnalisé où vous pouvez faire ce que vous voulez.

+0

Merci pour votre réponse mais malheureusement je suis encore un peu confus. Par exemple: J'ai supposé que dans ma page MakeUserActive.aspx (ou comme vous le suggérez à juste titre ActivateUser.aspx) je serais en mesure d'accéder aux propriétés du formulaire via Request.Form mais c'était vide. Pourriez-vous élaborer sur le scénario de publication? –

+0

Je ne suis pas sûr de ce que SharePoint fait magiquement, mais Request.Form n'a pas pu être rempli car CommandAction est une commande JavaScript - par conséquent, tout ce qu'il peut faire est de rediriger. La nouvelle forme ne peut donc pas connaître l'ancienne forme. Juste google pour ribbon postback et vous trouverez de nombreux exemples tels que celui-ci: http://blog.dennus.net/2010/07/20/ribbon-buttons-with-postback-in-sp2010/ –

+0

Ok, c'était le mot-clé Je cherchais "ribbon postback". Merci beaucoup pour ça. Cet article explique tout pour toute personne intéressée: http://blogs.msdn.com/b/sridhara/archive/2010/12/30/implementing-a-post-back-button-in-a-sharepoint-2010-web- part-with-contextual-ribbon.aspx –

Questions connexes