共用方式為


使用 Web 服務後端建立數值向上/向下控制項 (VB)

作者:Christian Wenz

下載 PDF

數字向上/向下控制項 (存在於 Windows 和其他作業系統上) 可能比讓使用者在核取方塊中輸入值更方便。 預設情況下,NumericUpDown 控制項會始終將值增加或減少 1,但 Web 服務證明具有更大的靈活性。

概觀

數字向上/向下控制項 (存在於 Windows 和其他作業系統上) 可能比讓使用者在核取方塊中輸入值更方便。 預設情況下,NumericUpDown 控制項始終將值增加或減少 1,但 Web 服務證明具有更大的靈活性。

步驟

ASP.NET AJAX 控制項工具包包含一個 NumericUpDown 擴充器,它會自動為文字方塊新增兩個按鈕:一個用於增加其值,一個用於減少其值。 不過,該控制項也支援 Web 服務呼叫 (或稱頁面方法呼叫)。 每當您按一下向上或向下按鈕時,JavaScript 程式碼就會連接到 Web 伺服器並在那裡執行一個方法。 方法簽名如下:

Function MethodName(ByVal current As Integer, ByVal tag As String) As Integer

current 參數是文字方塊中的目前值;tag 屬性是可以設定為 NumericUpDown 擴充功能的屬性的附加上下文資料 (但不是必需的)。

對於此範例,數字向上/向下控制應僅允許使用 2 的冪的值:1、2、4、8、16、32、64 等。 因此,當使用者想要增加該值時執行的方法必須是舊值的兩倍;另一種方法必須將值除以二。 這是完整的 Web 服務:

<%@ WebService Language="VB" Class="NumericUpDown1" %>
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<System.Web.Script.Services.ScriptService()> _
Public Class NumericUpDown1
 Inherits System.Web.Services.WebService
 <WebMethod()> _
 Function Up(ByVal current As Integer, ByVal tag As String) As Integer
 If current <= 536870912 Then
 Return current * 2
 Else
 Return current
 End If
 End Function
 <WebMethod()> _
 Function Down(ByVal current As Integer, ByVal tag As String) As Integer
 If current >= 2 Then
 Return CInt(current / 2)
 Else
 Return current
 End If
 End Function
End Class

最後,建立一個新的 ASP.NET 頁面。 像往常一樣,您需要一個 ScriptManager 控制項、一個 TextBox 控制項和一個 NumericUpDownExtender 控制項。 對於後者,您必須提供網路服務資訊:

  • ServiceDownMethod 下網方法或頁面方法的名稱
  • 使用 down service 方法存取 Web 服務的 ServiceDownPath 路徑;如果您使用的是頁面方法,則省略
  • up web 方法或頁面方法的 ServiceUpMethod 名稱
  • 使用 up service 方法存取 Web 服務的 ServiceUpPath 路徑;如果您使用的是頁面方法,則省略

這是頁面的完整標記:

<%@ Page Language="VB" %>
<!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.vb.asmx" ServiceDownPath="NumericUpDown1.vb.asmx"
 ServiceUpMethod="Up" ServiceDownMethod="Down" />
 </div>
 </form>
</body>
</html>

如果執行該頁面,請注意當您點擊上面的按鈕時文字方塊中的值總是加倍,而當您點擊下面的按鈕時文字方塊中的值總是減半。

僅出現 2 的冪的數字

僅顯示 2 的冪的數字 (點擊可看大圖)