摘要:[習題] 補充本書第19/20章的範例,AJAX / CallBack
文魁出版的 ASP.NET專題實務一書
本書第19 / 20章的範例,AJAX / CallBack
在此作一個補充。
題 目:
畫面上有兩個 TextBox輸入方塊。
當使用者輸入資料在第一個 TextBox1裡面時,
使用 AJAX / CallBack 將方才輸入的數值,呈現在第二個 TextBox2裡面。
第十九章 AJAX
使用 UpdatePanel來作,重點在於 ----
在於 UpdatePanel的 Triggers屬性,需要設定
02 <head runat="server">
03 <title>Untitled Page</title>
04 </head>
05 <body>
06 <form id="form1" runat="server">
07 <div>AJAX版<br />
08
09 </div>
10 輸入資料:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
11
12 <asp:Button ID="Button1" runat="server" Text="Button_按下以後,輸入值會出現在下面(AJAX UpdatePanel)" />
13
14 <hr />
15 <br />
16 <asp:ScriptManager ID="ScriptManager1" runat="server">
17 </asp:ScriptManager>
18
19 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
20 <ContentTemplate>
21 <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
22 <br />
23 本範例的重點,在於 UpdatePanel的 Triggers屬性,需要設定妥善。
24 </ContentTemplate>
25 <Triggers>
26 <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
27 </Triggers>
28 </asp:UpdatePanel>
29 </form>
30
31 </body>
32 </html>
Code Behind --
2 TextBox2.Text = TextBox1.Text
3 End Sub
第二十章 CallBack
02 <head runat="server">
03 <title></title>
04 <script type="text/javascript">
05 function Button1_CallBack_Click() //註解:交給後置程式碼,作CallBack動作
06 {
07 var tb1 = document.getElementById("TextBox1");
08 var u_input = tb1.value;
09 CallServer(u_input, "");
10 }
11
12 function ReceiveServerData(rValue) //註解:接收CallBack的「回傳值」
13 {
14 document.getElementById("ResultsSpan").innerHTML = rValue;
15 document.getElementById("TextBox2").value = rValue;
16 document.getElementById("T_Input").value = rValue;
17 }
18 </script>
19 <style type="text/css">
20 .style3
21 {
22 font-size: big;
23 background-color: #99FF99;
24 }
25 </style>
26 </head>
27 <body>
28 <p>CallBack版 -- 請自己慢慢寫程式</p>
29
30 <form id="form1" runat="server">
31 <div>
32 <p>
33 輸入資料:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
34
35 <!-- 按鈕,務必寫成傳統HTML表單元件 / DOM -->
36 <button onclick="Button1_CallBack_Click()">
37 Button_按下以後,輸入值會出現在下面(AJAX UpdatePanel)
38 </button>
39 </p>
40
41 <hr />
42 ASP.NET的 Server-side控制項
43 <hr />
44 <asp:TextBox ID="TextBox2" runat="server" Text=""></asp:TextBox>
45 <br />
46 <span id="ResultsSpan" runat="server" class="style3"></span>
47 <br />
48 <br />
49
50 <hr />
51 <input type="text" id="T_Input" value="HTML DOM" />
52 </div>
53 </form>
54
55 </body>
56 </html>
02 '--寫完上面這一行,底下就會自動跳出兩個新的副程式
03 ' 為需要接收回呼事件的任何自訂控制項,請實作 ICallbackEventHandler 介面。
04
05 '-- 後置程式碼會用到的共同變數。
06 Protected returnValue As String
07
08 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
09
10 '=======下面這兩段,是固定的寫法=========================
11 Dim cbReference As String '-- 返回前端(Client端)的結果、回傳值
12 cbReference = Page.ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData", "context")
13 '==參考資料 http://msdn2.microsoft.com/zh-tw/library/ms153103(VS.80).aspx
14
15 Dim callbackScript As String = "" '--前端(Client端)的function
16 callbackScript &= "function CallServer(arg, context) { "
19
20 '==============================================
21 '== 下面這兩個事件,也是固定的。後面都有一行 Implements 。==
22 '==============================================
23 ' 當回呼(CallBack)事件以實作 ICallbackEventHandler介面的控制項為目標時,會呼叫
24 ' RaiseCallbackEvent方法以處理事件,並做為參數傳遞此事件引數,
25 ' GetCallbackResult 方法會傳回「回呼的結果(CallBack Result)」。
26
27 Public Sub RaiseCallbackEvent(ByVal user_input As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
28 returnValue = user_input.ToString() '-- 返回前端(Client端)的結果、回傳值
29 End Sub
30
31 Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
32 Return returnValue
33 End Function & cbReference & "} ;"
17 Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "CallServer", callbackScript, True)
18 End Sub
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................
ASP.NET MVC => .NET Core MVC 線上教學 ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽
[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。