如何在 ASP.Net C# 中从父服务器端刷新 UserControl 或调用用户控件功能?
How to refresh UserControl or Call User control function from Parent serverside in ASP.Net C#?
我有一个带有下载文件按钮的页面,按下该按钮后,我希望刷新用户控件。这可以通过我在 UC 中编写的函数来完成。
所以:
我如何从父服务器端调用User_Control中的js函数(在用户按下下载_按钮下载文件后)
我使用了这个代码,但它不起作用?
Page.ClientScript.RegisterStartupScript(this.GetType(),"UpdateReportList", "UpdateReportList();", true);
Note: UpdateReportList() is js function in my user control .
HttpContext.Current.Response.WriteFile(sFilePath)
将附件写入整个响应 body,并且不会通过 Page.ClientScript.RegisterStartupScript()
附加其他标记或脚本。这就是您在浏览器中看不到触发 UpdateReportList()
的原因。
要更改的方法,还有几个其他选项可以实现此功能。
设置 cookie 而不是 Page.ClientScript.RegisterStartupScript()
,因为它是响应 header 的一部分。使用 setInterval()
启动 javascript 计时器,请求下载,读取 cookie,停止计时器,清除 cookie 并调用 UpdateReportList()
。
将整个代码移动到 asp.net 通用处理程序 (.ashx) 并重复上述相同的步骤。
您可以根据自己的需要想出一些其他的方案。
我的问题基于@Sudipta Maiti 和@puddleglum 的回答 link Update page after file download 我将我的代码更改为:
在下载按钮 OnClientClick 事件中,我在返回服务器之前添加了以下行:
setTimeout(function () {
window.location.reload(1);
}, 3000);
所以我会有一个短暂的延迟,然后重新加载页面。
我有一个带有下载文件按钮的页面,按下该按钮后,我希望刷新用户控件。这可以通过我在 UC 中编写的函数来完成。
所以: 我如何从父服务器端调用User_Control中的js函数(在用户按下下载_按钮下载文件后)
我使用了这个代码,但它不起作用?
Page.ClientScript.RegisterStartupScript(this.GetType(),"UpdateReportList", "UpdateReportList();", true);
Note: UpdateReportList() is js function in my user control .
HttpContext.Current.Response.WriteFile(sFilePath)
将附件写入整个响应 body,并且不会通过 Page.ClientScript.RegisterStartupScript()
附加其他标记或脚本。这就是您在浏览器中看不到触发 UpdateReportList()
的原因。
要更改的方法,还有几个其他选项可以实现此功能。
设置 cookie 而不是
Page.ClientScript.RegisterStartupScript()
,因为它是响应 header 的一部分。使用setInterval()
启动 javascript 计时器,请求下载,读取 cookie,停止计时器,清除 cookie 并调用UpdateReportList()
。将整个代码移动到 asp.net 通用处理程序 (.ashx) 并重复上述相同的步骤。
您可以根据自己的需要想出一些其他的方案。
我的问题基于@Sudipta Maiti 和@puddleglum 的回答 link Update page after file download 我将我的代码更改为:
在下载按钮 OnClientClick 事件中,我在返回服务器之前添加了以下行:
setTimeout(function () {
window.location.reload(1);
}, 3000);
所以我会有一个短暂的延迟,然后重新加载页面。