【问题标题】:file download is not working文件下载不工作
【发布时间】:2014-12-09 09:39:22
【问题描述】:

我在分层网格 (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

在项目数据绑定中

  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

【问题讨论】:

    标签: asp.net vb.net telerik


    【解决方案1】:

    简短的回答是 - 你不能

    MS AJAX 需要一套非常严格的规则才能应用于响应,并且发送文件会更改整个响应,包括标头,因此浏览器无法解析它。

    你可以做的是:

    • 通过客户端代码(如果您使用 RadAjax)为这些链接禁用 AJAX,如下所示:http://www.telerik.com/help/aspnet-ajax/grid-export-with-ajax-enabled.html

    • 将链接的 NavigateUrl 设置为您可以创建的自定义处理程序,该处理程序将获取文件,因此它们不会导致回发,而是导航浏览器框架。您可以添加查询字符串参数来指示处理程序要返回的文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多