我的代码如下:
Protected Sub unearned_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles unearned_run.ServerClick
Dim DataOut As String "a,b,c"
unearned_span.InnerHtml = unearned_policytype.Value
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=Unearned.csv")
Response.ContentType = "application/octet-stream"
Response.AddHeader("Content-Length", DataOut.Length())
Response.Write(DataOut)
End Sub
和html:
<form id="form1" runat="server">
<div id="unearnedreport" style="display:none">
<input id="unearned_run" type="button" runat="server" value="Run Report" />
<span id="unearned_span" runat="server"></span>
</div>
</form>
我想解决的问题是,当报告运行时,我没有得到繁忙的指针。但是,如果将指针悬停在浏览器窗口的最底部,我会得到一个繁忙的指针;特别是在有菜单选择放大倍数的区域。
注意:我不是Windows程序员,所以如果你能对我对.NET的了解做出很多假设,我会很感激。
答案 0 :(得分:3)
你提到你不是“Windows程序员”,但如果这是windows而不是web,答案就很容易了。 在Windows中,您将放置一行代码
Cursor.Current = Cursors.WaitCursor; //事件处理程序启动
Cursor.Current = Cursors.Default; //事件处理程序结束
在asp.net webforms环境中,您必须意识到浏览器上的click事件会导致页面回发到服务器,然后您的代码在服务器上运行,然后在服务器上生成html并且仅当您的Response.Write(DataOut)完成后,服务器上的此页面将返回客户端浏览器以进行呈现。 所以你需要在实际的客户端浏览器中运行一些东西(只有javascript可以在客户端工作)来显示一个视觉提示,这个提示将继续显示,直到服务器完成并且你的响应页面开始在浏览器中显示。看看C# Webforms show Loading indicator during code execution 如果您发现链接示例有用,请向该用户(Dennis R)提供赏金。
答案 1 :(得分:1)
我们可以通过使用BlockUI一个可以集成到asp.net Webforms中的Jquery插件来实现这一点,你不仅可以在每个应用程序中使用它,它可以用来等待用户直到动作完成
以下是您与应用程序集成的方式:
将Jquery和Block UI脚本标记添加到页面
将UiBlock
课程添加到您的unearned
按钮
添加以下脚本
$('.UiBlock').click(function () {
$('.blockMe').block({
css: {
border: 'none',
backgroundColor: '#fff',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .8,
color: '#000'
}
});
});
在调用服务器代码之前,在每次点击事件中都会调用它,并在获取数据后将其关闭。
我们实施了它并且也适合您的需要。
答案 2 :(得分:0)
你需要一个.net的javascript异步库的引用,以及更新代码的其他代码,让.net为你做这个,如果确实你想把它留给你生成的所有javascript你。
您还需要在更新面板中放置您想要处理的任何代码。
这应该可以帮助您入门:
https://msdn.microsoft.com/en-us/library/bb386573.aspx
一旦你掌握了这个,并想要一个鼠标指针改变,而不是说show“loading image gif”,你也可以用更多代码来做。