يرجى الاطلاع على النص الأصلي لـ Leon.Zhou: http://pfzhou.cnblogs.com/archive/2006/03/31/363342.html
لقد قمت بتنزيل نموذج التعليمات البرمجية وقمت بتحويله إلى VB. كان اختبار وظيفة AJAX ناجحًا. ولكن واجهت بعض المشاكل الصغيرة:
Demo1 أمر طبيعي.
فشل Demo2 في اختبار السطر 22 في AJAX.aspx.vb وفقًا لأسلوب الكتابة الأصلي الخاص بـ Leon. لذلك قمت مباشرة بتعديل خاصية OnClientClick الخاصة بـ Button3 في بيئة IDE، راجع السطر 52 من testAJAX.asp. تم الاختبار بنجاح.
فشل Demo3 في إضافة سمات العميل بنجاح وفقًا للطريقة الأصلية، ولم يعمل السطر 20 في testAJAX.aspx.vb. لا أعرف لماذا. لذلك أضفت Button3 فقط لتشغيل حدث العميل.
وهذا مثال جيد ويستحق التعلم للحصول على شرح مفصل للمبدأ، يرجى الاطلاع على النص الأصلي للمؤلف. عند الاختبار، يرجى إضافة <add name="NorthWind" ConnectionString="...سلسلة اتصال قاعدة البيانات المقابلة..."> في web.config الخاص بمشروعك
testAJAX.aspx
1<%@ لغة الصفحة = "VB" AutoEventWireup = "false" CodeFile = "testAJAX.aspx.vb" يرث = "testAJAX" %>
2
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
4
5<html xmlns=" http://www.w3.org/1999/xhtml " >
6<head id="Head1" runat="server">
7 <title>إرسال صفحة ASP.NET 2.0 بدون عرض توضيحي للتحديث</title>
8 <script type="text/javascript" language ="javascript">
9 وظيفة CallServer1 () وظيفة CallServer1 (التحكم في الإدخال، السياق)
10 {
11 context.innerHTML = "<IMG SRC='images/pie.gif' />جاري التحميل";
12 arg = 'ServerMethod1|' + inputcontrol.value;
13 <%= ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData1", "context")%>;
14}
15
16 وظيفة ReceiverServerData1 () وظيفة ReceiverServerData1 (النتيجة، السياق)
17 {
18 context.innerHTML = context.id + ":" + result;
19}
20
21 وظيفة CallServer2() وظيفة CallServer2(obj)
إثنان وعشرون {
23 سياق = شبكة؛
24 context.innerHTML = "<IMG SRC='images/pie.gif' />يتم تحميل البيانات";
25 arg = "ServerMethod2|" + obj.value;
26 <%= ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData2", "context")%>;
27}
28
29 وظيفة ReceiverServerData2 () وظيفة ReceiverServerData2 (النتيجة، السياق)
30 {
31 context.innerHTML = النتيجة؛
32}
33
34 </script>
35</الرأس>
36<الجسم>
37 <form id="form1" runat="server">
38 <ديف>
39 <h1>Demo1:زر html يرسل البيانات</h1><br />
40 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
41 <input id = "Button1" type = "button" value = "إرسال إلى Label1" onclick = "CallServer1 (TextBox1، Label1)"/>
42 <input id = "Button2" type = "button" value = "إرسال إلى Label2" عند النقر = "CallServer1 (TextBox1، Label2)"/>
43 <br />
44 <asp:Label ID="Label1" runat="server" Text="Label1:"></asp:Label>
45<br />
46 <asp:Label ID="Label2" runat="server" Text="Label2:"></asp:Label>
47 </ديف>
48 <ساعة />
49 <ديف>
50 <h1>Demo2: يقوم زر الخادم بإرسال البيانات</h1><br />
51 <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
52 <asp:Button ID="Button3" runat="server" Text="Button" OnClientClick="CallServer1(TextBox2, Label3);return false;" /><br />
53 <asp:Label ID="Label3" runat="server" Text="Label3:"></asp:Label></div>
54 <ساعة />
55 <ديف>
56 <h1>Demo3: ربط البيانات بين مربع القائمة المنسدلة وعرض الشبكة</h1><br />
57 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthWind %>"
58 SelectCommand="اختر متميزًا(بلد) من العملاء"></asp:SqlDataSource>
59 <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$connectionStrings:NorthWind %>"
60 SelectCommand="حدد معرف العميل، اسم الشركة، البلد من العملاء حيث البلد=@Country ">
61 <حدد المعلمات>
62 <asp:ControlParameter Name = "البلد" ControlID = "DropDownList1" PropertyName = "SelectedValue" />
63 </اختر المعلمات>
64 </asp:SqlDataSource>
65 <ديف>
66 <asp:DropDownList ID = "DropDownList1" runat = "الخادم" العرض = "239px"
67 DataSourceID="SqlDataSource1" DataTextField="البلد" DataValueField="البلد">
68 </asp:DropDownList>
69 <input id = "Button4" type = "button" value = "تحديث" عند النقر = "CallServer2 (DropDownList1)"/>
70 </div>
71 <br />
72 <span id="gridspan">
73 <asp:GridView ID = "GridView1" runat = "server" DataSourceID = "SqlDataSource2" CellPadding = "4" ForeColor = "#333333" GridLines = "لا شيء">
74 <FooterStyle BackColor = "#990000" Font-Bold = "True" ForeColor = "أبيض" />
75 <RowStyle BackColor = "#FFFBD6" اللون الأمامي = "#333333" />
76 <SelectedRowStyle BackColor = "#FFCC66" Font-Bold = "True" ForeColor = "Navy" />
77 <PagerStyle BackColor = "#FFCC66" ForeColor = "#333333" HorizontalAlign = "المركز" />
78 <HeaderStyle BackColor = "#990000" Font-Bold = "True" ForeColor = "أبيض" />
79 <AlternatingRowStyle BackColor="أبيض" />
80 </asp:GridView>
81 </سبان>
82 </ديف>
83 </النموذج>
84</الجسم>
85</html>
86
testAJAX.aspx.vb
1
2 نظام الواردات
3 واردات النظام. البيانات
4 نظام الاستيراد. التكوين
5 نظام الاستيراد.الويب
6 نظام الاستيراد.Web.Security
7 واردات System.Web.UI
8 يستورد System.Web.UI.WebControls
9استيراد System.Web.UI.WebControls.WebParts
10استيراد System.Web.UI.HtmlControls
11 نظام الاستيراد.IO
12نظام الواردات.العولمة
13
14 اختبار الفصل العام الجزئيAJAXاختبار الفصلAJAX
15 يرث System.Web.UI.Page
16 ينفذ ICallbackEventHandler
17 Page_Load الفرعية المحمية ()Sub Page_Load (ByVal sender As Object، ByVal e As EventArgs)
18 'تسجيل طريقة معالجة حدث العميل
19 'يبدو أن هذه الجملة لم تنجح، لذا أضفت زرًا إضافيًا 4 لتشغيل حدث العميل بواسطة AndyDavis
20 DropDownList1.Attributes.Add("onchange", "CallServer2(this)")
21 'يمكن تعيين حدث عميل Button3 مباشرةً في خاصية OnClientClick في IDE، ولا حاجة لإضافته هنا بواسطة AndyDavis
22 'Button3.Attributes.Add("onclick", "CallServer1(TextBox2, Label3);return false;")
23 النهاية الفرعية
أربعة وعشرون
25 خادم خاص يعود كسلسلة
26
27 الوظيفة العامة GetCallbackResult() الوظيفة GetCallbackResult() كسلسلة تنفذ ICallbackEventHandler.GetCallbackResult
28 'من أجل تسهيل عرض تأثير التحميل، أضف تأخيرًا
29 النظام.الخيوط.الخيط.النوم(2000)
30
31 أجزاء خافتة () كسلسلة = serverReturn.Split("|"c)
32 'الاتصال وفقًا لاسم الطريقة التي تم تمريرها وتمرير المعلمات المقابلة حاليًا يتم دعم معلمة واحدة فقط
33 إرجاع CStr([GetType]().GetMethod(parts(0)).Invoc(Me, New Object() {parts(1)}))
34 وظيفة النهاية
35
36
37 Public Sub RaiseCallbackEvent()Sub RaiseCallbackEvent(ByVal eventsArgument As String) تنفذ ICallbackEventHandler.RaiseCallbackEvent
38 serverReturn = eventsArgument
39 نهاية الفرعية
40
41 'وفقًا لاسم الدولة الإنجليزية أو الاختصار المنقول من العميل، قم بترجمته إلى اسم الدولة الصينية المقابلة
42 الوظيفة العامة ServerMethod1() الوظيفة ServerMethod1(ByVal arg كسلسلة) كسلسلة
43 خافت كسلسلة = ""
44 حدد الحالة arg.ToLower()
45 حالة "CN"
46 حالة "الصين"
47 ق = "الصين"
48 خروج حدد
49 حالة "نحن"
50 ثانية = "الولايات المتحدة"
51 اختيار الخروج
52 حالة أخرى
53 ق = "بلد غير معروف"
54 خروج حدد
55 نهاية اختر
56 عوائد
57 وظيفة النهاية
58
59 'قم بتحديث محتوى GridView بناءً على القيمة التي تم تمريرها من العميل، وقم بإرجاع ملف HTML المحدث الخاص بـ GridView
60 الوظيفة العامة ServerMethod2() الوظيفة ServerMethod2(ByVal arg كسلسلة) كسلسلة
61 DropDownList1.SelectedValue = arg
62 GridView1.DataBind()
63
64 التحكم في عرض الإرجاع (GridView1)
65 وظيفة النهاية
66
67 وظيفة التحميل الزائد الخاصة RenderControl() وظيفة RenderControl(تحكم ByVal كعنصر تحكم) كسلسلة
68 الكاتب الخافت 1 كـ StringWriter = New StringWriter(CultureInfo.InvariantCulture)
69 كاتب خافت2 كـ HtmlTextWriter = جديد HtmlTextWriter(writer1)
70
71 التحكم.RenderControl(writer2)
72 الكاتب2.فلاش()
73 الكاتب2.إغلاق()
74
75 إرجاع الكاتب1.ToString()
76 وظيفة النهاية
77 نهاية الفصل
78