Bhu*_*van 8 .net asp.net updatepanel
我有一个更新面板,并使用PostBackTrigger事件更新进度.但是当我点击按钮时,没有显示更新进度.请查看以下示例代码
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="updatepanelDropDownTaskType" CssClass="Token-setup-popup" DynamicLayout="true">
<ProgressTemplate>
<div id="loading" class="loading">
<asp:Image runat="server" ID="imgBusyIndicator" ImageUrl="~/images/busy-indicator.gif" />
</div>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="updatepanelDropDownTaskType" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:PostBackTrigger ControlID="btnExport" />
</Triggers>
<ContentTemplate>
<asp:Button ID="btnExport" runat="server" Text="Export To CSV" CssClass="button" CausesValidation="true" onclick="btnExport_Click" ClientIDMode="Static"/></asp:Button>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
我的代码背后
HttpResponse Response = System.Web.HttpContext.Current.Response;
Response.ClearHeaders();
Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
Response.ContentType = FileType;
Response.Write(content);
HttpContext.Current.ApplicationInstance.CompleteRequest();
Run Code Online (Sandbox Code Playgroud)
那么你的代码还可以.问题在于您Triggers使用的是哪种UpdatePanel.
微软说
所述
UpdateProgress控制呈现一个<div>所显示或隐藏取决于相关联的元件是否UpdatePanel控制已引起的asynchronous回传.对于初始页面呈现和synchronous回发,UpdateProgress不显示控件.
查看有关MSDN的更多详细信息
所以你PostBackTrigger在你的使用中UpdatePanel会导致synchronous回发并且UpdateProgress不会显示.
<Triggers>
<asp:PostBackTrigger ControlID="btnExport" />
// Incorrect
</Triggers>
Run Code Online (Sandbox Code Playgroud)
将其更改为
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnExport" />
// Correct
</Triggers>
Run Code Online (Sandbox Code Playgroud)
这将显示您的UpdateProgress并将按照您的期望工作.
正如您在评论中提到的那样,您也正在进行下载Grid.同样的方式你可以注册你Button的ScriptManager.这将注册您的按钮,并在asynchronous回发时发现下载按钮.
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Button btnExport = e.item.FindControl("btnExport") as Button;
if (btnExport != null)
{
((ScriptManager)this.Page.Master.FindControl("ID of your Script manager")).RegisterPostBackControl(downloadDocColumn);
// In Above line i assumed Script Manager is placed on Your master page.
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...
最后,在 iframe 和 sys.webforms 的 endrequestHandler 的帮助下,我完成了这项任务。我在我的博客中解释得很清楚,请找到链接http://bhuvanram.wordpress.com/。Complete方法必须在Iframe中调用,而不是在同一页面中调用
| 归档时间: |
|
| 查看次数: |
22283 次 |
| 最近记录: |