none
[SharePoint Foundation] - Formulaires NewForm.aspx et EditForm.aspx - Erreur à l'ajout et la suppression de pièce jointes RRS feed

  • Question

  • Bonjour,

    J'ai défini un template de liste basée sur un Content Type qui fait référence à des colonnes de sites.

    Sur cette liste j'ai customisé les formulaires NewFom.aspx et EditForm.aspx afin de pouvoir d'ajouter la possiblité d'avoir du code behind sur ces formulaires.

    Mes formulaire ne contiennent pas de traitement XSL pour l'affichage, les champs sont déclarés directement de la façon suivante :

    <td  valign="top" class="formlabel">
        <h3 class="ms-standardheader">
            <nobr>Direction</nobr>
        </h3>
    </td>
    <td  valign="top" class="formbody">
        <SharePoint:FormField runat="server" id="field_Direction" ControlMode="New" FieldName="Direction" />
    </td>

    La saisie d'un nouvel élément, la modification d'un élément existant et l'affichage d'un élément existant ne posent pas de soucis particulier.

    Les méthodes traitées via Code Behind fonctionnent correctement.

    De plus, sur ma liste personnalisée, j'ai deux EventReceiver ItemAdding et ItemUpdating qui ne lèvent pas la moindre exception.

    Mon soucis concerne les pièces jointes.

    Lors de l'ajout d'une pièce jointe à un élément de la liste via le formulaire, j'ai le message d'erreur qui apparait (l'erreur est générée après l'itemAdding ou l'itemUpdating) :

    Par contre lorsque je vérifie, la pièce jointe est bien rattachée à la liste et je peux la téléchargée.

    Ensuite, si je veux supprimer la pièce jointe en passant par mon formulaire de liste personnalisée, j'obtiens le message suivant :

    Ces deux messages apparaissent lors de l'action de sauvegarde de l'item, lors de l'insertion à partir du formulaire, la pièce jointe se rajoute correctement et la suppression aussi.

    C'est l'action de sauvegarde de l'item qui affiche ces messages d'erreur.

    Edit : Les pièces jointes sont bien sur activés sur la liste.

    D'avance merci.



    • Modifié Fred_SQLI vendredi 7 septembre 2012 11:12
    vendredi 7 septembre 2012 08:29

Toutes les réponses

  • Bonjour,

    Totalement néophyte en développement SharePoint mais la présence inhabituelle du . dans le dossier a attiré mon attention. Cela donne quoi si on essaie avec un nom de fichier sans . dans un nom de dossier ?

    Sinon je crois me souvenir que le "correlation ID" a pour but de retrouver plus de détails sur l'erreur ailleurs...

    Avec un peu de chance, qq de plus chevronné sur le sujet viendra donner un coup de main...

    Par exemple http://zimmergren.net/technical/sp-2010-find-error-messages-with-a-correlation-id-token-in-sharepoint-2010 ce qui devrait permettre de retrouver bien plus de détails sur l'erreur.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    vendredi 7 septembre 2012 15:38
  • Bonjour,

    Tout d'abord merci d'avoir pris le temps de répondre à ma question.

    En effet le correlation ID permet d'avoir une description du message d'erreur en prnvenance des logs SharePoint. Concernant mon erreur la trace est la suivante :

    Microsoft.SharePoint.SPException: L'élément de liste a été enregistré mais une ou plusieurs pièces jointes n'ont pas pu l'être.

    Impossible de télécharger le fichier C:\TEMP\temp.log.    à Microsoft.SharePoint.WebControls.SaveButton.HandleNonFatalError(SPContext itemContext)     à Microsoft.SharePoint.WebControls.SaveButton.SaveItem(SPContext itemContext, Boolean uploadMode, String checkInComment)     à Microsoft.SharePoint.WebControls.SaveButton.OnBubbleEvent(Object source, EventArgs e)     à System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)     à System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)     à System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

    Le plus étrange est le message indiquant que l'élément de la liste est enregistré mais pas la pièce jointe alors que la pièce jointe est bien enregistrée.

    Concernant le point dans le chemin d'accès au fichier, j'ai testé les scénarios suivants :

    Liste OOB => OK même avec un point dans le chemin

    Ma liste customisée => KO si point dans le chemin

    Ma liste customisée => KO même avec un chemin court genre C:\temp\info.doc et où les droits en lecture sont placés sur le répertoire tmp.

    Edit : J'ai avancé un petuit peu :

    En commentant la ligne de déclaration de la web part zone suivante :

    <WebPartPages:WebPartZone runat="server" FrameType="None" ID="Main" Title="loc:Main" Visible="false">
        <ZoneTemplate>
        </ZoneTemplate>
    </WebPartPages:WebPartZone>
    je retrouve un mode de fonctionnement normal des pièces jointes. Plus d'erreur, par contre je perds le Ribbon... je tourne en rond.

    Fred



    • Modifié Fred_SQLI lundi 10 septembre 2012 07:14
    lundi 10 septembre 2012 06:37
  • Bonjour Fred,

    Le type de fichier ".log" est peut etre bloqué pour cette application web.

    Tu peux vérifer cela dans le site d'administration globale:

    EDIT: Je viens de voir que tu as aussi testé un .doc. C'est donc autre chose qui coince.


    Cordialement/Regards,

    Ludovic Caffin
    .NET/SharePoint Consultant for A3IS.


    lundi 10 septembre 2012 08:39
  • Bonjour Ludovic,

    Merci pour ta réponse.

    J'ai testé toutes sortes de pièces jointes et lorsque le type de fichier est refusé, le message suivant apparait :

    Fred.

    lundi 10 septembre 2012 12:47
  • Bonjour,

    Je n'ai pas vraiment la réponse à votre question mais peut-être que ces liens vous aideront:

    https://www.nothingbutsharepoint.com/sites/eusp/Pages/sharepoint-list-attachment-technical-brief.aspx

    Il serait également intéressant de fournir votre code behind car le soucis vient probablement de là...

    http://sharepoint.stackexchange.com/questions/11062/attach-a-file-to-the-list-item

    En espérant que cela vous aide...


    Pascal P
    http://sharepoint-afterwork.fr
    Twitter: @PascalPoeck
    Facebook : https://www.facebook.com/SharePointAfterWork

    lundi 10 septembre 2012 19:25
  • Bonjour Pascal.

    Tout d'abord merci pour les liens fournis, je vais les étudier.

    Concernant mon code behind voila celui de la création c.a.d NewForm.aspx.cs. En debug il se déroule correctement sans aucune exception. L'injection des scripts se déroule correctement.

    using System; using Microsoft.SharePoint.WebControls; using Microsoft.SharePoint.WebPartPages; using System.Web.UI; [assembly: WebResource("BriqueTechniques.DefinitionListe.javascript.Redacteur.js", "text/javascript")] [assembly: WebResource("BriqueTechniques.DefinitionListe.javascript.Communs.js", "text/javascript")] namespace BriqueTechniques.DefinitionListe { public partial class Saisie : WebPartPage { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ClientScriptManager cs = Page.ClientScript; cs.RegisterClientScriptResource(typeof(BriqueTechniques.DefinitionListe.Saisie), "BriqueTechniques.DefinitionListe.javascript.Redacteur.js"); cs.RegisterClientScriptResource(typeof(BriqueTechniques.DefinitionListe.Saisie), "BriqueTechniques.DefinitionListe.javascript.Communs.js");

    SPRibbon ribbon = SPRibbon.GetCurrent(this.Page); if (ribbon != null) { ribbon.TrimById("Ribbon.ListForm.Edit.Commit"); ribbon.TrimById("Ribbon.ListForm.Edit.Clipboard"); } } } } }

    D'avance merci.

    Fred


    • Modifié Fred_SQLI mardi 11 septembre 2012 07:49
    mardi 11 septembre 2012 07:49
  • Bonjour

    Tout ceci me rappelle étrangement un bug de WSS3 où si on essai de personnaliser un formulaire via SharePoint Designer, la gestion des pièces jointes était complètement out !

    Je ne m'y connais pas plus que ça en personnalisation de formulaires mais je dirais que le soucis viens plus de là que du code behind...


    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    samedi 15 septembre 2012 20:46