Sdílet prostřednictvím


Vytvoření ovládacího prvku Numeric Up/Down webovou službou typu back-end (C#)

Christian Wenz

Stáhnout PDF

Místo toho, aby uživatel mohl zadat hodnotu do zaškrtávacího políčka, by se ovládací prvek pro číslo nahoru a dolů (který existuje ve Windows a jiných operačních systémech) mohl ukázat jako pohodlnější. Ve výchozím nastavení ovládací prvek NumericUpDown vždy zvyšuje nebo snižuje hodnotu o 1, ale webová služba ukazuje větší flexibilitu.

Přehled

Místo toho, aby uživatel mohl zadat hodnotu do zaškrtávacího políčka, by se ovládací prvek pro číslo nahoru a dolů (který existuje ve Windows a jiných operačních systémech) mohl ukázat jako pohodlnější. Ve výchozím nastavení NumericUpDown ovládací prvek vždy zvyšuje nebo snižuje hodnotu o 1, ale webová služba ukazuje větší flexibilitu.

Postup

Sada ASP.NET AJAX Control Toolkit obsahuje NumericUpDown extender, který automaticky přidá dvě tlačítka do textového pole: jedno pro zvýšení jeho hodnoty a druhé pro její snížení. Ovládací prvek však podporuje také volání webové služby (nebo volání metody stránky). Při každém kliknutí na tlačítko nahoru nebo dolů se kód JavaScriptu připojí k webovému serveru a spustí tam metodu. Podpis metody je následující:

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

Argument current je aktuální hodnota v textovém poli. tag Atribut jsou další kontextová data, která lze nastavit jako vlastnost extenderu NumericUpDown (ale není vyžadována).

Pro tento vzorek musí číselný ovládací prvek nahoru/dolů povolit pouze hodnoty, které jsou mocniny dvou: 1, 2, 4, 8, 16, 32, 64 atd. Proto metoda spuštěna, když uživatel chce zvýšit hodnotu musí zdvojnásobit starou hodnotu; druhá metoda musí hodnotu vydělit dvěma. Tady je kompletní webová služba:

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

Nakonec vytvořte novou ASP.NET stránku. Jako obvykle potřebujete ScriptManager ovládací prvek, TextBox ovládací prvek a NumericUpDownExtender ovládací prvek. V případě druhé musíte poskytnout informace o webové službě:

  • ServiceDownMethod název webové metody nebo metody stránky mimo provoz
  • ServiceDownPath cesta k webové službě s metodou down service; Pokud používáte metodu stránky, vynecháte ji.
  • ServiceUpMethod name of the web method or page method
  • ServiceUpPath cesta k webové službě s metodou up service; Pokud používáte metodu stránky, vynecháte ji.

Tady je kompletní kód stránky:

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

Pokud spustíte stránku, všimněte si, že hodnota v textovém poli se vždy zdvojnásobí, když kliknete na horní tlačítko, a když kliknete na dolní tlačítko, sníží se na polovinu.

Zobrazí se jenom čísla, která mají mocninu 2.

Zobrazí se pouze čísla, která mají mocninu 2 (kliknutím zobrazíte obrázek v plné velikosti).