Web サービス バックエンドで数値を上げ下げするコントロールを作成する (VB)

作成者: Christian Wenz

PDF のダウンロード

ユーザーがチェック ボックスに値を入力する代わりに、数値の上下コントロール (Windows やその他のオペレーティング システムに存在) が、より快適になる可能性があります。 既定では、NumericUpDown コントロールにより常に値が 1 ずつ増減されますが、Web サービスは柔軟性を高めます。

概要

ユーザーがチェック ボックスに値を入力する代わりに、数値の上下コントロール (Windows やその他のオペレーティング システムに存在) が、より快適になる可能性があります。 既定では、NumericUpDown コントロールにより常に値が 1 ずつ増減されますが、Web サービスは柔軟性を高めます。

手順

ASP.NET AJAX コントロール ツールキットには、テキスト ボックスに自動的に 2 つのボタン (1 つは値を増やすため、1 つは値を減らすため) を追加する NumericUpDown エクステンダー コントロールが含まれています。 ただし、コントロールは Web サービス呼び出し (またはページ メソッド呼び出し) もサポートします。 上または下のボタンがクリックされるたびに、JavaScript コードは Web サーバーに接続し、そこでメソッドを実行します。 メソッド シグネチャは次のとおりです。

Function MethodName(ByVal current As Integer, ByVal tag As String) As Integer

current 引数はテキスト ボックス内の現在の値です。tag 属性は、NumericUpDown エクステンダー コントロールのプロパティとして設定できる追加のコンテキスト データです (必須ではありません)。

このサンプルでは、数値の上下制御では、1、2、4、8、16、32、64 などの 2 の累乗の値のみを使用できます。 したがって、ユーザーが値を大きくする場合に実行されるメソッドは、古い値を 2 倍にする必要があります。もう 1 つのメソッドでは、値を 2 で除算する必要があります。 完全な Web サービスを次に示します。

<%@ WebService Language="VB" Class="NumericUpDown1" %>
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<System.Web.Script.Services.ScriptService()> _
Public Class NumericUpDown1
 Inherits System.Web.Services.WebService
 <WebMethod()> _
 Function Up(ByVal current As Integer, ByVal tag As String) As Integer
 If current <= 536870912 Then
 Return current * 2
 Else
 Return current
 End If
 End Function
 <WebMethod()> _
 Function Down(ByVal current As Integer, ByVal tag As String) As Integer
 If current >= 2 Then
 Return CInt(current / 2)
 Else
 Return current
 End If
 End Function
End Class

最後に、新しい ASP.NET ページを作成します。 通常どおり、ScriptManager コントロール、TextBox コントロール、NumericUpDownExtender コントロールが必要です。 後者の場合は、Web サービス情報を指定する必要があります。

  • ServiceDownMethod: ダウン Web メソッドまたはページ メソッドの名前
  • ServiceDownPath: ダウン サービス メソッドを使用した Web サービスへのパス。ページ メソッドを使用している場合は省略する
  • ServiceUpMethod: Web メソッドまたはページ メソッドの名前
  • ServiceUpPath: アップ サービス メソッドを使用した Web サービスへのパス。ページ メソッドを使用している場合は省略する

ページの完全なマークアップを次に示します。

<%@ Page Language="VB" %>
<!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.vb.asmx" ServiceDownPath="NumericUpDown1.vb.asmx"
 ServiceUpMethod="Up" ServiceDownMethod="Down" />
 </div>
 </form>
</body>
</html>

ページを実行する場合は、上ボタンをクリックするとテキスト ボックスの値が常に 2 倍になり、下ボタンをクリックすると半分になります。

Only numbers that are a power of 2 appear

2 の累乗である数値のみが表示されます (フルサイズの画像を表示する場合はクリックします)