次の方法で共有


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

作成者: Christian Wenz

PDF のダウンロード

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

概要

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

手順

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

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

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

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

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

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

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

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

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

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

2 の累乗である数値のみが表示されます

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