在服务器端的ajax面板中的新窗口中打开链接

时间:2014-08-23 18:09:27

标签: asp.net ajax telerik

我以前曾问过这个问题,但没有得到有效的答案。

这是一个应该启动下载的按钮点击事件:

protected void btnDownload_Command1(object sender, CommandEventArgs e)
{
    GridDataItem item = gvClients.Items[Convert.ToInt32(e.CommandArgument)];
    GetUserData usr = new GetUserData(item["id"].Text, Security.level.Agent, servermap);
    string file = usr.RetrieveContractPath();
    SendFileDownload(file);
}

提供的解决方案之一是在新窗口中打开一个链接,让页面加载窗口通过这段代码启动下载:

protected void btnDownload_Command1(object sender, CommandEventArgs e)
{
    GridDataItem item = gvClients.Items[Convert.ToInt32(e.CommandArgument)];
    GetUserData usr = new GetUserData(item["id"].Text, Security.level.Agent, servermap);
    string file = usr.RetrieveContractPath();
    // SendFileDownload(file); dont call it here , call it in the other window
    string url = "PopupFileDownload.aspx?file="+file;
    string s = "window.open('" + url + "', 'popup_window', 'width=300,height=100,left=100,top=100,resizable=yes');";
    ClientScript.RegisterStartupScript(this.GetType(), "script", s, true);

}

这不起作用。我尝试使用Telerik Ajax面板时做了类似的事情

ajaxPanel.ResponseScripts.Add("window.open('DownLoadPopup.aspx?file='" + file + "'', 'popup_window', 'width=300,height=100,left=100,top=100,resizable=yes');");

但这也行不通。该命令执行无效。 如何在不牺牲Ajax面板的情况下将文件发送给用户?

2 个答案:

答案 0 :(得分:0)

如果您的按钮位于ASP.NET Ajax UpdatePanel内,您可以关闭仅仅下载按钮的ajax

ScriptManager.RegisterPostBackControl(btnDownload);

答案 1 :(得分:0)

如果您正在使用Telerik Ajax控件,则可以使用以下代码弹出RadWindow。

确保RadAjaxPanel之前页面上有RadScriptManager和RadAjaxManager ......

然后在RadAjaxPanel中添加一个RadWindowManager,就像这样...

<telerik:RadWindowManager runat="server" ID="rwm" Modal="true" Skin="Default" AutoSize="true" />

然后在你的代码中,你可以这样做......

protected void btnDownload_Command1(object sender, CommandEventArgs e)
{
  GridDataItem item = gvClients.Items[Convert.ToInt32(e.CommandArgument)];
  GetUserData usr = new GetUserData(item["id"].Text, Security.level.Agent, servermap);
  string file = usr.RetrieveContractPath();

  rwm.Windows.Clear();
  var rWin = new RadWindow();
  rWin.ID = "Name of my window";
  rWin.NavigateUrl = string.Format("~/DownLoadPopup.aspx?file={0}", file);
  rWin.Width = Unit.Pixel(1000);
  rWin.Height = Unit.Pixel(600);
  rWin.VisibleOnPageLoad = true;
  rwm.Windows.Add(rWin);
}

根据需要调整DownLoadPopup.aspx的路径和RadWindow的属性。