Mise à jour ASP.NET étiquette après clic sur le bouton, à l'aide de UpdatePanel
J'essaie d'avoir deux choses se passe lorsque je clique sur un bouton dans un ASP.NET page:
- Modifier le texte dans une page ASP:Label.
- Désactiver le bouton.
J'ai fait beaucoup de recherches sur ce point, mais j'ai eu des difficultés à faire de l'un ou l'autre.
Pour le #1, j'ai pensé que cela devrait fonctionner, mais il n'a pas d':
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub BtnSubmit_Click(sender As Object, e As System.EventArgs)
Label1.Text = "Working..."
System.Threading.Thread.Sleep(5000)
Label1.Text = "Done."
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test Page</title>
</head>
<body>
<form id="form1" runat="server">
<ajaxToolkit:ToolkitScriptManager runat="server" />
<div>
<asp:ListBox runat="server" Height="100px" />
<br />
<asp:UpdatePanel runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="BtnSubmit" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Press the button" />
</ContentTemplate>
</asp:UpdatePanel>
<br />
<asp:Button runat="server" ID="BtnSubmit" OnClick="BtnSubmit_Click" Text="Submit Me!" />
</div>
</form>
</body>
</html>
Le "Travail..." le message n'est jamais affiché.
Comme pour le #2, j'ai ajouté à cela le bouton (j'ai oublié où je l'ai trouvé):
OnClientClick="this.disabled = true; this.value = 'Working...';"
UseSubmitBehavior="false"
Qui eu pour effet de désactiver le bouton et la modification de son texte (valeur), mais il n'était pas possible de le modifier à l'aide du Texte et des Permis de propriétés.
Vous devez vous connecter pour publier un commentaire.
ASP ne sont pas vider le résultat dans le navigateur tout en travaillant, même si vous utilisez un UpdatePanel. Il va finir la jobb (y compris le sommeil) avant de rincer.
Vous pouvez utiliser un UpdateProgress de montrer le "Travail.." du texte.
Cela permettra de montrer tout leur contenu de l'UpdatePanel est de travail. Une fois l'UpdatePanel est terminé, le contenu va disparaître.
Ce dont vous avez besoin en vous ClickEvent est:
Cela permettra de montrer le Fait de texte et de désactiver le bouton. Et de dire la UpdateProgress à disparaître.
Je viens de trouver une solution sur le site web msdn (http://msdn.microsoft.com/en-us/library/bb386518.aspx). Ajouté un peu de code et supprimer certaines parties inutiles.
Ce que vous avez faire est de vous inscrire certaines gestionnaire d'événements pour Initialize_ et End_Request - dans ces vous de désactiver et d'activer votre bouton!
HTH
Le Travail de message n'est jamais affiché parce que vous êtes l'exécution du script sur le serveur, ce qui ne veut pas répondre au client jusqu'à la sortie de la méthode.
ASP.NET AJAX a construit dans le contrôle pour l'affichage des messages comme cela, alors que l'UpdatePanel est en attente sur le serveur.
Découvrez le Contrôle UpdateProgress:
Vous pouvez désactiver le bouton de réglage de la
Enabled
valeur false à la propriété dans votre serveur-côté de la méthode.@1: Vous n'aurez plus jamais voir le message de "Travail" que vous avez arrêté le fil .... Chaque Message sera affiché lors de votre processus de "terminé".
@2: vous codés client pour désactiver le bouton, il n'y a pas de code pour réactiver votre bouton
hth
Tout d'abord, le "travail" n'apparaît jamais, parce que la valeur finale de l'étiquette au moment de l'après-back est "Fini". Pensez à ce qui se passe ici - vous cliquez sur le bouton qui provoque un post-retour vers le serveur. Il traite de l'après-dos qui comprend l'exécution sur le bouton cliquez sur le code, dont le résultat est ensuite envoyé vers le navigateur. Votre "travail du texte" ne fait jamais de retour sur le fil.
Je ne suis pas clair sur ce que vous essayez d'accomplir avec le code côté client, mais à faire ce que vous décrivez vous êtes almsot il y côté serveur:
Aussi, mais votre bouton à l'intérieur de votre panneau de mise à jour les balises du modèle de sorte qu'il participe à l'ajax publication.