Freigeben über


Erstellen eines numerischen Auf/Ab-Steuerelements mit einem Webdienst-Back-End (C#)

von Christian Wenz

PDF herunterladen

Anstatt es einem Benutzer zu erlauben, einen Wert in ein Kontrollkästchen einzugeben, könnte sich ein numerisches Steuerelement nach oben/unten (das unter Windows und anderen Betriebssystemen vorhanden ist) als komfortabler erweisen. Standardmäßig erhöht oder verringert das NumericUpDown-Steuerelement immer einen Wert um 1, aber ein Webdienst beweist mehr Flexibilität.

Übersicht

Anstatt es einem Benutzer zu erlauben, einen Wert in ein Kontrollkästchen einzugeben, könnte sich ein numerisches Steuerelement nach oben/unten (das unter Windows und anderen Betriebssystemen vorhanden ist) als komfortabler erweisen. Standardmäßig erhöht oder verringert das NumericUpDown Steuerelement immer einen Wert um 1, aber ein Webdienst beweist mehr Flexibilität.

Schritte

Das ASP.NET AJAX Control Toolkit enthält den NumericUpDown Extender, der automatisch zwei Schaltflächen zu einem Textfeld hinzufügt: eine zum Erhöhen des Werts, eine zum Verringern. Das Steuerelement unterstützt jedoch auch einen Webdienstaufruf (oder Seitenmethodenaufruf). Wenn auf die Schaltfläche nach oben oder unten geklickt wird, stellt der JavaScript-Code eine Verbindung mit dem Webserver und führt dort eine Methode aus. Die Methodensignatur ist die folgende:

public int MethodName(int current, string tag) {}

Das current Argument ist der aktuelle Wert im Textfeld. Das tag Attribut ist zusätzliche Kontextdaten, die als Eigenschaft des NumericUpDown Extenders festgelegt werden können (aber nicht erforderlich).

Für diese Stichprobe darf die numerische Aufwärts-/Abwärtssteuerung nur Werte zulassen, die Mächte von zwei sind: 1, 2, 4, 8, 16, 32, 64 usw. Daher muss die Methode, die ausgeführt wird, wenn der Benutzer den Wert erhöhen möchte, den alten Wert verdoppeln; Die andere Methode muss den Wert durch zwei dividieren. Hier ist also der vollständige Webdienst:

<%@ 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;
 };
 }
}

Erstellen Sie schließlich eine neue ASP.NET Seite. Wie üblich benötigen Sie ein ScriptManager Steuerelement, ein TextBox Steuerelement und ein NumericUpDownExtender Steuerelement. Für letztere müssen Sie die Webdienstinformationen angeben:

  • ServiceDownMethod Name der Down-Webmethode oder Pagemethode
  • ServiceDownPath Pfad zum Webdienst mit der Down-Service-Methode; Weglassen, wenn Sie eine Seitenmethode verwenden
  • ServiceUpMethod Name der up-Webmethode oder Seitenmethode
  • ServiceUpPath Pfad zum Webdienst mit der Up-Service-Methode; Weglassen, wenn Sie eine Seitenmethode verwenden

Hier sehen Sie das vollständige Markup für die Seite:

<%@ 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>

Wenn Sie die Seite ausführen, beachten Sie, wie der Wert im Textfeld immer verdoppelt wird, wenn Sie auf die obere Schaltfläche klicken, und wird halbiert, wenn Sie auf die untere Schaltfläche klicken.

Nur Zahlen, die eine Potenz von 2 darstellen, werden angezeigt

Nur Zahlen, die eine Potenz von 2 aufweisen, werden angezeigt (Klicken Sie, um das Bild in voller Größe anzuzeigen)