2012-04-11 2 views
0

Ich zeige ein Panel, das eine Schaltfläche enthält. Wenn der Benutzer auf die Schaltfläche klickt, führt er eine Verarbeitung durch und lädt dann eine Datei für den Benutzer herunter. Der Code für das Sie hier:Asp.net - kann die Sichtbarkeit des Panels nach dem Herunterladen der Datei nicht ändern

private void OpenForm(string content, string formName) 
    { 
     Byte[] bytes = System.Text.Encoding.Default.GetBytes(content); 

     this.Response.AppendHeader("Content-Type", "application/msword"); 
     this.Response.AppendHeader("Content-Length", bytes.Length.ToString()); 
     this.Response.AppendHeader("Content-disposition", "attachment; filename=" + formName); 
     this.Response.BinaryWrite(bytes); 

     ReturnToMemberScreen(); 

     this.Response.Flush(); 
     this.Context.ApplicationInstance.CompleteRequest(); 
    } 

In der Funktion ReturnToMemberScreen ich die Sichtbarkeit von einigen Panels am Wechsel. Hier ist die Funktion:

private void ReturnToMemberScreen() 
    { 
     this.panelMappings.Visible = false; 
     this.MemberEditPNL.Visible = true; 
    } 

ich die Datei herunterladen kann völlig in Ordnung, mein Problem ist, dass die Sichtbarkeit meiner Platten nicht ändern. Hat es etwas mit dem Schreiben an die Antwort zu tun, wie ich bin?

Antwort

0

näher Sehen, ich glaube, ich keine Änderungen an der Seite machen, weil ich die Content-Type der Antwort von „text/html“ am Wechsel auf application/msword, wenn ich dies tun:

this.Response.AppendHeader("Content-Type", "application/msword"); 

Als Ergebnis mache ich alle meine Änderungen mit CSS und Javascript statt. In der Standardeinstellung ich meine Platten entweder zeigen oder mit CSS verstecken:

.hide  
{   
    display:none;  
} 

.show 
{ 
    display:block; 
} 

Dann stelle ich die OnClientClick der Schaltfläche auf der folgenden Javascript-Funktion die Anzeige zu ändern:

function visible() 
{ 
    document.getElementById('<%=panelForms.ClientID %>').style.display = 'none'; 
    document.getElementById('<%=MemberEditPNL.ClientID %>').style.display = 'block'; 
} 
1

Verwenden Sie nicht Visible = false, da das Element nicht gerendert wird. Versuchen Sie:

+1

versuchte dies und es hat das Problem nicht gelöst. –

+0

Haben Sie versucht, die innere Verkleidung zuerst und dann die äußere Verkleidung sichtbar zu machen? – coder

+0

Versucht dies und das Problem besteht immer noch –

0

Legen Sie die Sichtbarkeit der Anzeigen im Page_Load-Ereignis fest? Wenn dies der Fall ist und Postbacks nicht innerhalb des Ereignisses verarbeitet werden, überschreiben die Sichtbarkeitseinstellungen möglicherweise die Einstellungen in ReturnToMemberScreen.

+0

Nein, ich setze sie nicht in der Page_Load. Ich habe den Code debuggt und mache nichts mit der Sichtbarkeit der Panels neben der ReturnToMemberScreen-Funktion. –

Verwandte Themen