我正在显示一个包含按钮的面板。当用户单击该按钮时,它会进行一些处理,然后为该用户下载文件。其代码如下所示:
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 :(得分:1)
不要使用Visible = false,因为这会导致元素无法呈现。尝试:
// To hide:
Panel1.Style.Add("display", "none");
// To show:
Panel1.Style.Add("display", "block");
答案 1 :(得分:0)
您是否在Page_Load事件中设置了面板的可见性?如果是这样,并且如果您未在事件中处理回发,则可见性设置可能会覆盖ReturnToMemberScreen中的设置。
答案 2 :(得分:0)
仔细观察,我想我无法对页面进行任何更改,因为我在执行此操作时将响应的Content-Type从“text / html”更改为application / msword:
this.Response.AppendHeader("Content-Type", "application/msword");
结果,我正在使用CSS和Javascript进行所有更改。默认情况下,我将面板设置为使用css显示或隐藏:
.hide
{
display:none;
}
.show
{
display:block;
}
然后我将按钮的OnClientClick
设置为以下Javascript函数以更改显示:
function visible()
{
document.getElementById('<%=panelForms.ClientID %>').style.display = 'none';
document.getElementById('<%=MemberEditPNL.ClientID %>').style.display = 'block';
}