我以前曾问过这个问题,但没有得到有效的答案。
这是一个应该启动下载的按钮点击事件:
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面板的情况下将文件发送给用户?
答案 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的属性。