Créer un contrôle NumericUpDown avec traitement via un Service Web.
Par
Christian Wenz (Traduction par Rémy Mainil)
Plutôt que de laisser l'utilisateur saisir une valeur dans une case, un contrôle NumericUpDown (qui existe sur Windows et les autres systèmes d'exploitation) pourrait
se révéler plus confortable. Par défaut, le contrôle NumericUpDown incrémente ou décrémente toujours la valeur de 1, mais un service Web se révélera plus flexible.
Traduction
Présentation
Etapes
Traduction
Présentation
Plutôt que de laisser l'utilisateur saisir une valeur dans une case, un contrôle NumericUpDown (qui existe sur Windows et les autres systèmes d'exploitation) pourrait
se révéler plus confortable. Par défaut, le contrôle NumericUpDown incrémente ou décrémente toujours la valeur de 1, mais un service Web se révélera plus flexible.
Etapes
L'ASP.NET AJAX Control Toolkit contient l'extenseur NumericUpDown qui ajoute automatiquement deux boutons à une textbox: un pour incrémenter sa valeur, l'autre pour la
décrémenter. Cependant, le contrôle gère également un appel à un service Web (ou à une méthode de Page).
Lorsque le bouton plus ou moins est cliqué, le code JavaScript se connecte au server web et y exécute une méthode. La signature de la méthode est la suivante :
public int MethodName(int current, string tag) {}
|
Le paramètre current est la valeur courante dans la textbox; le paramètre tag est une donnée contextuelle supplémentaire qui peut être définie comme une
propriété supplémentaire de l'extenseur NumericUpDown (mais qui n'est pas obligatoire).
Pour cet exemple, le contrôle NumericUpDown devra uniquement autoriser des valeurs qui sont des puissances de 2 : 1, 2, 4, 8, 16, 32, 64, etc. Dès lors, la méthode
exécutée lorsque l'utilisateur veut incrémenter la valeur doit doubler la valeur précédente; l'autre méthode doit la diviser par deux. Voici le service Web complet :
<%@ WebService Language="C#" Class="NumericUpDown1" %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[System.Web.Script.Services.ScriptService]
public class NumericUpDown1 : System.Web.Services.WebService {
[WebMethod]
public int Up(int current, string tag){
if (current <= 536870912){
return current * 2;
} else {
return current;
}
}
[WebMethod]
public int Down(int current, string tag){
if (current >= 2){
return (int)(current / 2);
} else {
return current;
};
}
}
|
Pour finir, créez une nouvelle page ASP.NET. Comme d'habitude, vous avez besoin d'un contrôle ScriptManager, un contrôle TextBox et un
contrôle NumericUpDownExtender. Pour le dernier, vous devez fournir les informations du service web :
- ServiceDownMethod : Nom de la méthode "décrémenter" du service ou de la page
- ServiceDownPath : Chemin vers le service web contenant la méthode "décrémenter"; Ne rien mettre s'il s'agit d'une méthode de page
- ServiceUpMethod : Nom de la méthode "incrémenter" du service ou de la page
- ServiceUpPath : Chemin vers le service web contenant la méthode "incrémenter"; Ne rien mettre s'il s'agit d'une méthode de page
Voici le code de la page :
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Control Toolkit</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="asm" runat="server" />
<div>
How many MB do you want? <asp:TextBox ID="TextBox1" Text="32" runat="server" />
<ajaxToolkit:NumericUpDownExtender ID="nud" runat="server" TargetControlID="TextBox1" Width="100" ServiceUpPath="NumericUpDown1.cs.asmx"
ServiceDownPath="NumericUpDown1.cs.asmx" ServiceUpMethod="Up" ServiceDownMethod="Down" />
</div>
</form>
</body>
</html>
|
Si vous exécutez la page, vous remarquerez que la valeur contenue dans la textbox double à chaque fois que vous cliquez sur le bouton "incrémenter", et est
divisée en deux lorsque vous cliquez sur le bouton "décrémenter".

Seuls les nombres qui sont une puissance de 2 apparaissent.


Copyright © 2009 Equipe Dotnet. Aucune reproduction, même partielle, ne peut être faite
de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 €
de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.
Cette page est déposée.