정보 라인과 사용자 지정 단추가 포함 된 리피터가있는 ASP.NET 3.5 페이지에서 상태를 변경합니다. asp : 리피터 내부에서 다운로드 가능한 콘텐츠를 클릭 한 후 UpdateProgress가 사라지지 않음
는이btn1 btn2 btn3 Id Title Description Status1 Status2
인 btn1처럼 및 btn2는 각각 상태 1과 2를 변경하는 데 사용되는 가정하자.
btn3은 다운로드 가능한 MS-Word 보고서를 다시 보내는 사용자 지정 처리기로 리디렉션됩니다. 이것은 실제로 페이지를 떠나지 않고 발생합니다.
리피터가 updatePanel 안에 있으므로 매번 전체 페이지를 다시로드하지 않아도 상태를 업데이트 할 수 있습니다.
btn1 또는 2를 클릭하면 로딩 스피너가 평소와 같이 나타나고 프로세스가 완료되고 상태가 변경되면 페이드 아웃됩니다.
btn3을 클릭하면 다운로드가 완료된 후에도 로딩 스피너가 그대로 있으며 외출하지 않습니다.
어떤 일이 벌어 질 수 있습니까?
처리기 코드 : 리피터에
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.IO;
using PublishVersionControlCore;
using System.Configuration;
namespace PublishVersionControlWebControl.Handler
{
public class WordFileHandler : IHttpAsyncHandler
{
private HttpContext _context;
private AsyncTaskDelegate del;
protected delegate void AsyncTaskDelegate(HttpContext context);
#region IHttpAsyncHandler Members
public WordFileHandler()
{
this.del = new AsyncTaskDelegate(ProcessRequest);
}
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
{
// Store context
_context = context;
return del.BeginInvoke(context, cb, extraData);
}
public void EndProcessRequest(IAsyncResult result)
{
this.del.EndInvoke(result);
}
#endregion
#region IHttpHandler Members
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
HttpResponse resp = context.Response;
resp.Clear();
int workItemId = 0;
if (Int32.TryParse(context.Request.QueryString["wi"], out workItemId))
{
MemoryStream ms = null;
using (WorkItemReportService.ReportClient client = new WorkItemReportService.ReportClient())
{
byte[] resultFile = client.GenerateWorkReport(
new Uri(ConfigurationManager.AppSettings["serverUri"]),
workItemId,
ConfigurationManager.AppSettings["wordTemplate"]);
ms = new MemoryStream(resultFile);
}
resp.ContentType = "application/octet-stream";
resp.AddHeader("content-disposition", String.Format("attachment;filename=RelatorioSimples_WI-{0}.docx", workItemId));
resp.Buffer = true;
ms.WriteTo(resp.OutputStream);
resp.End();
}
}
#endregion
}
}
ItemCommand :
if (e.CommandName.Equals("WordExport"))
{
string uri = HttpContext.Current.Request.RawUrl;
string url = string.Format("{0}/WordReport.dohx?wi={1}",
uri.Substring(0, uri.LastIndexOf("/")), wivdata.SystemID);
Response.Redirect(url);
}
영문 페이지 (I 관련이었고, 무엇을하지 무엇인지 파악하지 않았다 나는 이후 모든 붙여 넣기) :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="~/ListaDeAtividadesPage.aspx.cs"
MasterPageFile="~/_layouts/customapplication.master" Inherits="PublishVersionControlWebControl.ListaDeAtividadesPage, PublishVersionControlWebControl, Version=1.0.0.0, Culture=neutral, PublicKeyToken=78508f22b73cda2b" %>
<%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<asp:Content ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
<link rel='stylesheet' text='text/css' href='/_layouts/Extensions/Versioning/css/style.css' />
<script src="/_layouts/Extensions/Versioning/js/jquery.tools.min.js" type="text/javascript"></script>
<script src="/_layouts/Extensions/Versioning/js/jquery.corner.js" type="text/javascript"></script>
</asp:Content>
<asp:Content ID="Content1" ContentPlaceHolderID="PlaceHolderPageImage" runat="server">
<img width="145" height="54" alt="Dashboard" src="/_layouts/Microsoft.TeamFoundation/images/notes.png" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea"
runat="server">
<asp:Literal ID="TitleContent" runat="server"></asp:Literal>
</asp:Content>
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
<script type="text/javascript">
_spOriginalFormAction = document.forms[0].action;
_spSuppressFormOnSubmitWrapper = true;
</script>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="updPanel">
<ProgressTemplate >
<div class="follower">
<asp:Image ID="imgUpdate" CssClass="follower" ImageUrl="/_layouts/Extensions/Versioning/img/ui/ajax-loader.gif"
runat="server" />
<span class="follower">Carregando...</span>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
<div>
<asp:UpdatePanel ID="updPanel" runat="server">
<ContentTemplate>
<asp:Literal ID="tooltipScript" runat="server" />
<div class="buttonBar">
<hr style="color: #426DA8;" />
<asp:Button CssClass="specific" ID="btnUpdateWI" Text="Atualiza WIs da Lista" runat="server"
UseSubmitBehavior="false" />
<asp:Button CssClass="specific" ID="btnRelatorioScripts" Text="Relatório de Scripts/ZIPs"
runat="server" />
<asp:Button CssClass="specific" ID="Button1" Text="Relatório de Publicações" runat="server" />
<asp:Button CssClass="generic" ID="btnVolta" Text="Volta ao Menu de Versões" runat="server" />
<hr style="color: #426DA8;" />
</div>
<asp:Repeater ID="rptListaAtividades" runat="server">
<HeaderTemplate>
<asp:Label ID="comentarioHeader" runat="server"/>
<h3>
<b class="rollback">Rollback</b> | <b class="emteste">Em Teste</b> | <b class="aindanaoincluido">
Ainda não Incluído</b> | <b class="parcialmenteok">Atividade Parcialmente OK</b>
| <b class="todosok">Atividade OK em Todas as Lojas</b> | <b class="parcpublicado">Parcialmente Publicada</b> | <b class="publicado">Atividade
Publicada</b>
</h3>
</HeaderTemplate>
<ItemTemplate>
<div class="item" style="display: inline-block; font-size: 12px">
<asp:ImageButton ToolTip="Gerar Relatório Word" ImageUrl="/_layouts/Extensions/Versioning/img/wordexport.png"
CommandName="WordExport" ID="btnWordExport" CssClass="itembutton" runat="server" />
<asp:ImageButton ToolTip="Marcar como Rollback" ImageUrl="/_layouts/Extensions/Versioning/img/rollback.png"
CommandName="MarkAsRollback" ID="btnItemRollback" CssClass="itembutton" runat="server" />
<asp:ImageButton ToolTip="Esta atividade possui código. Clique para sinalizar como apenas procedure/config"
ImageUrl="/_layouts/Extensions/Versioning/img/code.png" CommandName="MarkAsProc"
ID="btnItemProc" CssClass="itembutton" runat="server" />
<asp:Image ToolTip="Esta atividade não possui scripts de banco/zips." ImageUrl="/_layouts/Extensions/Versioning/img/noscript.png"
runat="server" CssClass="itembutton" ID="btnItemScript" />
<asp:Label ID="labelWI" Text="" runat="server"></asp:Label>
<asp:Literal ID="tooltip" runat="server" />
<asp:Label ID="labelState" Text="" runat="server"></asp:Label>
<span style="color: #4A82CB">
<%# DataBinder.Eval(Container.DataItem, "SystemAssignedTo") %>
- </span><span style="color: Navy">
<%# DataBinder.Eval(Container.DataItem, "SystemTitle") %>
</span>
<asp:HiddenField ID="workItemID" runat="server" />
</div>
<hr class="item" noshade style="color: #4CBDCB; height: 2px; background-color: #4CBDCB" />
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</asp:Content>
기타 자세한 사항 :
- 내가 그것을
고맙습니다. 제 솔루션에서 자바 스크립트를 사용하여 파일을 요청했습니다. –