사용자가 검사 상자에 값을 입력하도록 하는 대신 숫자 위쪽/아래쪽 컨트롤(Windows 및 기타 운영 체제에 있음)이 더 편안할 수 있습니다. 기본적으로 NumericUpDown 컨트롤은 항상 값을 1씩 늘리거나 줄이지만 웹 서비스는 더 많은 유연성을 증명합니다.
개요
사용자가 검사 상자에 값을 입력하도록 하는 대신 숫자 위쪽/아래쪽 컨트롤(Windows 및 기타 운영 체제에 있음)이 더 편안할 수 있습니다. 기본적으로 컨트롤은 NumericUpDown
항상 값을 1씩 늘리거나 줄이지만 웹 서비스는 더 많은 유연성을 증명합니다.
단계
ASP.NET AJAX 컨트롤 도구 키트에는 텍스트 상자에 두 개의 단추를 자동으로 추가하는 extender가 포함되어 NumericUpDown
있습니다. 하나는 값을 높이기 위한 단추이며, 하나는 감소하기 위한 것입니다. 그러나 컨트롤은 웹 서비스 호출(또는 페이지 메서드 호출)도 지원합니다. 위쪽 또는 아래쪽 단추를 클릭할 때마다 JavaScript 코드는 웹 서버에 연결하고 메서드를 실행합니다. 메서드 서명은 다음과 같습니다.
public int MethodName(int current, string tag) {}
인수는 current
텍스트 상자의 현재 값입니다. tag
특성은 extender의 NumericUpDown
속성으로 설정할 수 있는 추가 컨텍스트 데이터입니다(필수는 아님).
이 샘플의 경우 숫자 위쪽/아래쪽 컨트롤은 1, 2, 4, 8, 16, 32, 64 등 2의 권한 값만 허용합니다. 따라서 사용자가 값을 늘리려는 경우 실행되는 메서드는 이전 값의 두 배가 되어야 합니다. 다른 메서드는 값을 2로 나누어야 합니다. 전체 웹 서비스는 다음과 같습니다.
<%@ 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
컨트롤 및 컨트롤이 NumericUpDownExtender
필요합니다ScriptManager
. 후자의 경우 웹 서비스 정보를 제공해야 합니다.
-
ServiceDownMethod
다운 웹 메서드 또는 페이지 메서드의 이름 -
ServiceDownPath
다운 서비스 메서드를 사용하여 웹 서비스에 대한 경로입니다. 페이지 메서드를 사용하는 경우 생략 -
ServiceUpMethod
up 웹 메서드 또는 페이지 메서드의 이름 -
ServiceUpPath
up 서비스 메서드를 사용하여 웹 서비스에 대한 경로입니다. 페이지 메서드를 사용하는 경우 생략
페이지의 전체 태그는 다음과 같습니다.
<%@ 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의 강력한 숫자만 표시됩니다(전체 크기 이미지를 보려면 클릭).