Sharepoint événement de mise à jour de l'article - annuler l'événement Retour à la page EditForm?

StackOverflow https://stackoverflow.com/questions/2050466

  •  20-09-2019
  •  | 
  •  

Question

J'ai un récepteur d'événements pour un type de contenu pour valider certaines données en cas ItemUpdating. Si je résilie l'événement (certaines des données n'est pas valide par exemple), je définir les propriétés annuler true:

properties.Cancel = true;
properties.ErrorMessage = "...";

SharePoint annule l'événement de mise à jour ok, mais montre la page standard d'erreur SharePoint (avec le message spécifié). Le seul problème est, j'ai une plainte que ce n'est pas vraiment très utile -. nous devons revenir à la page EditForm afin que les détails peuvent être mis à jour

Quelqu'un at-il fait cela, est-il un moyen facile? La seule suggestion que j'ai eu est que je peux mettre en œuvre ma propre page d'erreur, mais qui est tout à fait sonner une solution lourde à un processus simple (théoriquement).

Était-ce utile?

La solution

Vous pouvez essayer de code de sortie HTML (qui comprend aussi bien le javascript) dans le ErrorMessage. Mais même si vous le faites, le problème est que vous avez aucun moyen sûr de retour aux données que l'utilisateur a entré. Soit vous faites une HTTP / redirection 301 et il est une nouvelle charge de page, ou vous faites le client aller history.back() avec JavaScript et le navigateur peut recharger la page.

La façon officielle de le faire est que vous créez une définition de la liste et de personnaliser le modèle de liste. Ensuite, vous modifiez le modèle de formulaire de modifier et d'inclure autant de contrôles de validateur ASP.Net au besoin. Ensuite, mettre en œuvre la logique côté serveur que vous avez besoin. Cet article explique la technique: http://msdn.microsoft.com/en- nous / bibliothèque / aa543922.aspx

EDIT: Pour joindre un contrôle personnalisé pour l'édition d'un contenttype spécifique, vous ajoutez une section xmldocuments à votre définition de ContentType. Par exemple, comme ceci

<ContentType
    ..........

    <XmlDocuments>
      <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
        <FormTemplates xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
          <Display>ContentTypeName_DispForm</Display>
          <Edit>ContentTypeName_EditForm</Edit>
          <New>ContentTypeName_NewForm</New>
        </FormTemplates>
      </XmlDocument>
    </XmlDocuments>
  .......

Ensuite, vous créez votre propre fichier yoursolution_controltemplates.ascx, qui contient aussi bien de tels blocs: "

<SharePoint:RenderingTemplate ID="ContentTypeName_DispForm" runat="server"> 
<Template>
      <!-- put whatever controls you need here, we typically create a 
           separate custom control which implements everything-->
</Template>
</SharePoint:RenderingTemplate>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top