Создание числового поля со стрелками "вверх/вниз" с помощью серверной веб-службы (C#)
Вместо того, чтобы позволить пользователю ввести значение в поле проверка, элемент управления "вверх/вниз" (который существует в Windows и других операционных системах) может оказаться более удобным. По умолчанию элемент управления NumericUpDown всегда увеличивает или уменьшает значение на 1, но веб-служба обеспечивает большую гибкость.
Общие сведения
Вместо того, чтобы позволить пользователю ввести значение в поле проверка, элемент управления "вверх/вниз" (который существует в Windows и других операционных системах) может оказаться более удобным. По умолчанию NumericUpDown
элемент управления всегда увеличивает или уменьшает значение на 1, но веб-служба обеспечивает большую гибкость.
Этапы
Набор средств управления ASP.NET AJAX содержит NumericUpDown
расширитель, который автоматически добавляет в текстовое поле две кнопки: одна для увеличения его значения, другая — для уменьшения. Однако элемент управления также поддерживает вызов веб-службы (или вызов метода страницы). При нажатии кнопки вверх или вниз код JavaScript подключается к веб-серверу и выполняет метод там. Ниже приведена сигнатура метода.
public int MethodName(int current, string tag) {}
Аргумент current
является текущим значением в текстовом tag
поле; атрибут представляет собой дополнительные данные контекста NumericUpDown
, которые можно задать как свойство расширителя (но не является обязательным).
Для этого примера элемент управления "Вверх-вниз" должен разрешать только значения, которые являются двумя значениями: 1, 2, 4, 8, 16, 32, 64 и т. д. Поэтому метод, выполняемый, когда пользователь хочет увеличить значение, должен удвоить старое значение; другой метод должен разделить значение на два. Ниже приведена полная веб-служба.
<%@ 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. Как обычно, вам нужен ScriptManager
элемент управления, TextBox
элемент управления и NumericUpDownExtender
элемент управления. Для последнего необходимо предоставить сведения о веб-службе:
ServiceDownMethod
имя нижнего веб-метода или метода страницыServiceDownPath
путь к веб-службе с помощью метода неунижаемой службы; опустить, если используется метод страницыServiceUpMethod
имя метода up web или pageServiceUpPath
путь к веб-службе с помощью метода up service; опустить, если используется метод страницы
Ниже приведена полная разметка для страницы:
<%@ 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 (щелкните, чтобы просмотреть изображение в полном размере)