2012-04-11 5 views
0

ボタンを含むパネルを表示しています。ユーザーがボタンをクリックすると、処理が行われ、ユーザーのファイルがダウンロードされます。そのコードは次のとおりです。Asp.net - ファイルのダウンロード後にパネルの表示を変更できない

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(); 
    } 

ReturnToMemberScreen関数では、いくつかのパネルの可視性を変更しています。ここに関数があります:

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

ファイルを完全にダウンロードできます。私の問題は、私のパネルの可視性が変わらないことです。それは私のようにレスポンスに書くことと関係がありますか?

答えて

0

は近づいてみると、私は、アプリケーション/ mswordはに「text/htmlの」からの応答のコンテンツタイプを変更していますので、私はこれを行うとき、私はページを変更することはできませんだと思います結果として、私はCSSとJavascriptですべての変更を行っています。デフォルトでは、私はショーのいずれかに私のパネルを設定したり、CSSを使用して非表示:

.hide  
{   
    display:none;  
} 

.show 
{ 
    display:block; 
} 

は、それから私は、表示を変更するには、以下のJavaScript関数にボタンのOnClientClickを設定します。

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

Visible = falseを使用して、要素を描画しないようにしないでください。試してみてください:

// To hide: 
Panel1.Style.Add("display", "none"); 
// To show: 
Panel1.Style.Add("display", "block"); 
+1

はこれとそれを試してみました問題を解決しませんでした。 –

+0

最初に内側パネルを表示し、次に外側パネルを表示する設定を試しましたか? – coder

+0

これを試しても問題は残っています –

0

Page_Loadイベントでパネルの表示を設定していますか?その場合、イベント内でポストバックを処理していない場合は、可視性設定がReturnToMemberScreenの設定をオーバーライドしている可能性があります。

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

+0

いいえ、私はPage_Loadで設定していません。私はコードを使ってデバッグしましたが、私はReturnToMemberScreen関数のほかにパネルの可視性について何もしていません。 –

関連する問題