[習題] 補充本書第19/20章的範例,AJAX / CallBack

摘要:[習題] 補充本書第19/20章的範例,AJAX / CallBack

文魁出版的 ASP.NET專題實務一書

本書第19 / 20章的範例,AJAX / CallBack

在此作一個補充。

 

 

題 目:

      畫面上有兩個 TextBox輸入方塊。

      當使用者輸入資料在第一個 TextBox1裡面時,

      使用 AJAX / CallBack 將方才輸入的數值,呈現在第二個 TextBox2裡面。

 

第十九章  AJAX

使用 UpdatePanel來作,重點在於 ----

      在於 UpdatePanel的 Triggers屬性,需要設定

01 <html xmlns="http://www.w3.org/1999/xhtml">
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     &nbsp;
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 --

1     Protected Sub UpdatePanel1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles UpdatePanel1.Load
2         TextBox2.Text = TextBox1.Text
3     End Sub

 

 

第二十章  CallBack

01 <html xmlns="http://www.w3.org/1999/xhtml">
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             &nbsp;
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>

 

 

01 Implements System.Web.UI.ICallbackEventHandler
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 約75~88hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


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 (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

         累積時數約 75~ 88小時...... 第一天(5.5小時)完整內容,"免費"讓您評估