J'ai eu le même problème. Il n'y a aucun moyen facile de dire à updateProgress de rendre en ligne. Vous feriez mieux de lancer votre propre élément updateProgress. Vous pouvez ajouter un écouteur beginRequest et un écouteur endRequest pour afficher et masquer l'élément que vous souhaitez afficher en ligne. Voici la page simple qui montre comment le faire:
ASPX
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
<asp:UpdatePanel runat="server" ID="up1" UpdateMode="Always">
<ContentTemplate>
<asp:Label ID="lblTest" runat="server"></asp:Label>
<asp:Button ID="btnTest" runat="server" Text="Test" OnClick="btnTest_OnClick" />
</ContentTemplate>
</asp:UpdatePanel>
<img id="loadingImg" src="../../../images/loading.gif" style="display:none;"/><span>Some Inline text</span>
<script>
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(function(sender, args) {
if (args.get_postBackElement().id == "btnTest") {
document.getElementById("loadingImg").style.display = "inline";
}
});
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) {
if (document.getElementById("loadingImg").style.display != "none") {
document.getElementById("loadingImg").style.display = "none";
}
});
</script>
</div>
</form>
cs
public partial class updateProgressTest : System.Web.UI.Page
{
protected void btnTest_OnClick(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(1000);
this.lblTest.Text = "I was changed on the server! Yay!";
}
}
cool, prendre des trucs de mono dans une excellente idée! –
Je change la réponse acceptée (désolé Steven!) Parce que cette approche a fonctionné mieux. J'ai publié la source dans mon contrôle UpdateProgressEx: http://www.stum.de/2010/01/28/an-asp-net-ajax-updateprogress-that-can-render-inline/ –