【问题标题】:Open link in a new window in ajax panel on server side在服务器端的 ajax 面板的新窗口中打开链接
【发布时间】:2014-10-17 08:43:08
【问题描述】:

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

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

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 面板的情况下向用户发送文件?

【问题讨论】:

    标签: asp.net ajax telerik


    【解决方案1】:

    如果您使用 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 的属性。

    【讨论】:

    【解决方案2】:

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

    ScriptManager.RegisterPostBackControl(btnDownload);
    

    【讨论】:

    • 我刚才用这个解决方案解决了这个问题:AjaxPanel1.registerstartupscripts.add(myscript);
    猜你喜欢
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2012-07-27
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多