我需要生成月度报告,所以我有模式,在模式内部,用户可以选择要生成的月度报告范围,然后在用户单击“确定”按钮后,微调器应在过程进行中显示。该月)。但是我的微调框没有显示。.
我的HTML-MODAL
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" style="color: Black">Generate Monthly</h4>
</div>
<div class="modal-body">
<p>
</p>
<asp:RadioButtonList ID="generateMonthly" runat="server" AutoPostBack="true" OnSelectedIndexChanged="generateMonthly_SelectedIndexChanged"
CssClass="rbGenerate">
<asp:ListItem Text="Jan-April" Value="1" />
<asp:ListItem Text="May - August" Value="2" />
<asp:ListItem Text="Sept - December" Value="3" />
</asp:RadioButtonList>
<div id="divSpinner" align="center" runat="server">
Processing. Please wait.<br />
<br />
<img src="../build/images/loading.gif" alt="" />
</div>
</div>
<div class="modal-footer">
<asp:Button ID="btnOK" runat="server" Text="OK" OnClick="saveGenerate" class="btn btn-success" />
<asp:Button ID="btnClose" runat="server" Text="Close" OnClick="hideGenerate" class="btn btn-danger" />
</div>
</div>
</div>
我的密码隐藏
public void saveGenerate(object sender, EventArgs e)
{
Debug.WriteLine("ENTERED saveGenerate n start spinner");
divSpinner.Visible = true;
Task task = GenerateReport();
task.Wait();
Debug.WriteLine("done");
Debug.WriteLine("SHOWING THIS AFTER GENERATE_MONTH PROCESS FINISH");
divSpinner.Visible = false;
}
生成报告代码
public async Task GenerateReport()
{
//selected radiobutton(month range)
//executing query - to generate report based on selected month and saved into table
Debug.WriteLine("Process complete");
await Task.Delay(1000);
}
我的问题是,微调器没有显示。我试图参考其他答案,但仍然无法正常工作。
答案 0 :(得分:0)
对于客户端应用程序(例如Winforms或WPF),预期的行为是正确的,尽管这是Web应用程序。 saveGenerate 事件在服务器端处理,仅在请求完成后,结果才作为HTTP响应发送到客户端。这就是为什么您看不到微调器出现在浏览器中的原因。请注意,在服务器上,任务是异步处理的。一种解决方案是在调用服务器之前使用客户端Javascript显示微调器。服务器端解决方案是在显示微调框(Response.Body.Flush
)之后立即刷新您的响应。