Web サービス バックエンドで数値を上げ下げするコントロールを作成する (C#)
ユーザーにチェック ボックスに値を入力させる代わりに、数値のアップ/ダウン コントロール (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 の累乗の数値のみが表示されます (フルサイズの画像を表示する場合はクリックします)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示