2017-09-06 6 views
0

J'ai un formulaire Web qui a une page principale, que cette page maître utilise un panneau de mise à jour.C# Bouton de téléchargement à l'intérieur du panneau de mise à jour dans la page maître

Le problème est, chaque fois que je tente de télécharger un fichier que je suis cette erreur:

Impossible d'évaluer l'expression car le code est optimisé ou un cadre natif est sur le dessus de la pile d'appel

Ce code

Response.ClearContent(); 
    Response.ClearHeaders(); 

    Response.AppendHeader("Content-Disposition", 
    string.Format("filename=Relatorio.{0}", "xlsx")); 
    Response.ContentType = "application/vnd.ms-excel"; 
    Response.BinaryWrite(File_Converted_toBytes); 
    Response.Flush(); 
    Response.End(); 

Si je crée un nouveau projet par exemple, une forme web l'un, et il suffit de créer une page blanche, qui a un bouton un code à l'intérieur, tout fonctionne bien.

Quelqu'un a une idée?

Répondre

1

Le bouton qui lance le téléchargement doit déclencher une publication complète. Être à l'intérieur d'un UpdatePanel, il est impossible jusqu'à ce que vous faites quelque chose comme ceci:

<asp:UpdatePanel runat="server"> 
    <Triggers> 
     <asp:PostBackTrigger ControlID="YourControlID" /> 
    </Triggers> 
    <ContentTemplate> 
     ..... 
    </ContentTemplate> 
+0

Ok, mais à l'intérieur de ma page Le panneau de mise à jour est injoignable. Cuz Je Maître page avec un UpdatePanel Alors mon Ma page – joab

+0

Vous pouvez essayer sur votre page ' load-ScriptManager.GetCurrent (this.Page) .RegisterPostBackControl (this.YourControlID);' – Cooleshwar

+0

Hey avec cette ligne Cela a fonctionné. – joab

0

Avez-vous essayé d'atteindre votre panneau de mise à jour à l'intérieur de « ma page » comme ça?

UpdatePanel up = (UpdatePanel)Master.FindControl("updadepanelID"); 
0

La solution a été commenté par Cooleshwar

ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(‌​ 
this.YourControlID)