我有一个包含的Web用户控件FormView.formview显示求职者的详细信息.我已经为"下载简历"链接提供了一个按钮,以便admin/HR可以下载简历.我已将此控件放在包含UpdatePanel的aspx页面中.一切正常,除了下载链接.
我在donwload链接按钮上给出了一个命令,并且一个功能与开始下载的命令相关联.
以下是我实施的代码 -
//Command on 'Download' link button within FormView
protected void lnkDownload_Command(object sender, CommandEventArgs e)
{
if (e.CommandName.Equals("Download"))
{
StartDownload(e.CommandArgument.ToString());
}
}
//My routine to download document
//sFileInfo contains filepath$==$mimetype
protected void StartDownload(string sFileInfo)
{
string[] d = sFileInfo.ToString().Split((new string[] { "$==$" }), StringSplitOptions.None);
string filename = d[0];
string docType = d[1];
System.IO.FileInfo file = new System.IO.FileInfo(d[0]);
if (file.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + d[0]);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = d[1];
Response.WriteFile(file.FullName);
Response.End();
}
else
{
Server.Transfer("~/Mesgbox.aspx?cat=2");
}
}
Run Code Online (Sandbox Code Playgroud)
如果删除更新面板,则代码可以正常工作,但如果使用更新面板,则会生成脚本错误.
有什么建议....?
谢谢你分享你的时间.
Mit*_*tul 60
要启动整页回发,请在更新面板中添加回发触发器:
<asp:UpdatePanel runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="YourControlID" />
</Triggers>
<ContentTemplate>
.....
Run Code Online (Sandbox Code Playgroud)
小智 23
您无法在UpdatePanel部分回发中返回附件,因为ScriptManager使用结果更新DIV(而不是整个响应).您尝试做的最简单的修复方法是将下载按钮设置为回发控件.这将导致该按钮启动完整回发.以下代码包含在您的Page_Load中
ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(this.lnkDownload);
Run Code Online (Sandbox Code Playgroud)
小智 5
您仍然可以从更新面板中触发下载文档.
我有一个更新面板,里面有3个嵌套的中继器.在最内部的转发器中,我使用LinkButtons构建了一系列下载链接,每个链接都包含一个通过webservice获取文档并发送它的命令.
每个转发器都有一个OnItemDataBound方法.在最后一个中继器中,我有以下内容
protected void LinkDocRepeaterOnItemDataBound(object sender, RepeaterItemEventArgs e) {
if(!(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)) {
return;
}
LinkButton linkButton = (LinkButton)e.Item.FindControlRecursive("LinkId");
var scriptManager = ScriptManager.GetCurrent(this.Page);
if (scriptManager != null) {
scriptManager.RegisterPostBackControl(linkButton);
}
}
Run Code Online (Sandbox Code Playgroud)
每个Linkbutton现在都下载一个文档.
| 归档时间: |
|
| 查看次数: |
43963 次 |
| 最近记录: |