我在分层网格( Telerik RadGrid )中有一个名为Download
的链接按钮。我计划在该链接按钮的点击事件中下载该文件。在我在页面中放置更新面板之前,一切正常。即使页面包含更新面板,我该如何下载word文件。以下是我正在使用的代码:
在项目命令
中 If e.CommandName = "lnkdwnload" Then
objdbconn.ExecuteNonQuerySQL(msSql)
Response.ContentType = "application/msword"
Response.AppendHeader("Content-Disposition", "attachment; filename=" & myfile.Name)
Response.AppendHeader("Content-Length", myfile.Length.ToString())
Response.WriteFile(myfile.FullName)
Response.End()
End If
Item DataBound中的
If e.Item.ItemType = GridItemType.Item Or e.Item.ItemType = GridItemType.AlternatingItem Then
If e.Item.OwnerTableView.Name = "contactentry" Then
Dim lnk As LinkButton = Nothing
lnk = DirectCast(e.Item.FindControl("lnkdwnload"), LinkButton)
If lnk IsNot Nothing Then
ScriptManager.GetCurrent(Me).RegisterPostBackControl(lnk)
End If
End If
End If
答案 0 :(得分:0)
简短的回答是 - 你不能。
MS AJAX需要一组非常严格的规则来应用于响应,并且发送文件会更改整个响应,包括标题,因此浏览器无法解析它。
你能做的是:
通过客户端代码(如果您使用RadAjax)禁用这些链接的AJAX,如下所示:http://www.telerik.com/help/aspnet-ajax/grid-export-with-ajax-enabled.html。
将链接的NavigateUrl设置为可以克隆的自定义处理程序,它将获取文件,因此它们不会导致回发,而是导航浏览器框架。您可以添加查询字符串参数,以指示处理程序要返回的文件