1

我有一个带有下载文件按钮的页面,按下该按钮后,我希望刷新用户控件。这可以通过我在 UC 中编写的功能来完成。

所以:如何从父服务器端调用 User_Control 中的 js 函数(用户按下下载按钮下载文件后)

我使用了这段代码,但它不起作用?

Page.ClientScript.RegisterStartupScript(this.GetType(),"UpdateReportList", "UpdateReportList();", true);

注意:UpdateReportList() 是我的用户控件中的 js 函数。

4

2 回答 2

1

HttpContext.Current.Response.WriteFile(sFilePath)将附件写入整个响应正文,并且没有其他标记或脚本通过 Page.ClientScript.RegisterStartupScript(). 这就是您UpdateReportList()在浏览器中看不到触发的原因。

要更改的方法,还有其他几个选项可以实现此功能。

  1. 设置一个 cookie,而不是Page.ClientScript.RegisterStartupScript()作为响应标头的一部分。使用 启动 javascript 计时器setInterval(),请求下载,读取 cookie,停止计时器,清除 cookie 并调用UpdateReportList()

  2. 将整个代码移至 asp.net 通用处理程序 (.ashx) 并重复上述相同步骤。

  3. 您可以根据您的要求考虑其他一些选项。

于 2015-12-09T04:51:53.297 回答
1

我的问题基于@Sudipta Maiti,而@puddleglum 在此链接中的答案文件下载后更新页面 我将代码更改为:

在下载按钮 OnClientClick 事件上,我在返回服务器之前添加了以下行:

setTimeout(function () {
        window.location.reload(1);
    }, 3000);

所以我会有短暂的延迟,然后重新加载页面。

于 2015-12-11T05:47:36.293 回答