Web サービス バックエンドで数値を上げ下げするコントロールを作成する (VB)
作成者: Christian Wenz
ユーザーがチェック ボックスに値を入力する代わりに、数値の上下コントロール (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 倍になり、下ボタンをクリックすると半分になります。
2 の累乗である数値のみが表示されます (フルサイズの画像を表示する場合はクリックします)