Bitte sehen Sie sich den Originaltext von Leon.Zhou an: http://pfzhou.cnblogs.com/archive/2006/03/31/363342.html
Ich habe den Beispielcode heruntergeladen und in VB konvertiert. Es sind jedoch einige kleine Probleme aufgetreten:
Demo1 ist normal.
Demo2 konnte Zeile 22 in AJAX.aspx.vb gemäß Leons ursprünglicher Schreibmethode nicht testen. Daher habe ich die OnClientClick-Eigenschaft von button3 direkt in der IDE-Umgebung geändert, siehe Zeile 52 von testAJAX.asp. Test erfolgreich.
Demo3 konnte Clientattribute gemäß der ursprünglichen Methode nicht erfolgreich hinzufügen und Zeile 20 in testAJAX.aspx.vb funktionierte nicht. Ich weiß nicht warum. Deshalb habe ich nur eine Schaltfläche3 hinzugefügt, um das Client-Ereignis auszulösen.
Dies ist ein gutes Beispiel und es lohnt sich, es zu lernen. Eine ausführliche Erläuterung des Prinzips finden Sie im Originaltext des Autors. Fügen Sie beim Testen bitte <add name="NorthWind" ConnectionString="...corresponding Database Connection String..."> in die web.config Ihres Projekts ein
testAJAX.aspx
1<%@ Page Language="VB" AutoEventWireup="false" CodeFile="testAJAX.aspx.vb" Inherits="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-Seitenübermittlung ohne Aktualisierungsdemonstration</title>
8 <script type="text/javascript" language ="javascript">
9 Funktion CallServer1() Funktion CallServer1(inputcontrol, context)
10 {
11 context.innerHTML = "<IMG SRC='images/pie.gif' />Loading";
12 arg = 'ServerMethod1|' + inputcontrol.value;
13 <%= ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData1", "context")%>;
14}
15
16 Funktion ReceiveServerData1()Funktion ReceiveServerData1(Ergebnis, Kontext)
17 {
18 context.innerHTML = context.id + ":" + result;
19}
20
21 Funktion CallServer2() Funktion CallServer2(obj)
zweiundzwanzig {
23 context = Gridspan;
24 context.innerHTML = "<IMG SRC='images/pie.gif' />Daten werden geladen";
25 arg = "ServerMethod2|" + obj.value;
26 <%= ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData2", "context")%>;
27}
28
29 Funktion ReceiveServerData2()Funktion ReceiveServerData2(Ergebnis, Kontext)
30 {
31 context.innerHTML = result;
32}
33
34 </script>
35</head>
36<Körper>
37 <form id="form1" runat="server">
38 <div>
39 <h1>Demo1:html-Schaltfläche übermittelt Daten</h1><br />
40 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
41 <input id="Button1" type="button" value="Submit to Label1" onclick="CallServer1(TextBox1, Label1)"/>
42 <input id="Button2" type="button" value="Submit to Label2" onclick="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 </div>
48 <hr />
49 <div>
50 <h1>Demo2: Server-Schaltfläche übermittelt Daten</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;"
53 <asp:Label ID="Label3" runat="server" Text="Label3:"></asp:Label></div>
54 <hr />
55 <div>
56 <h1>Demo3: Datenbindung zwischen Dropdown-Listenfeld und Rasteransicht</h1><br />
57 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthWind %>"
58 SelectCommand="Wählen Sie ein bestimmtes Land aus den Kunden aus"></asp:SqlDataSource>
59 <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:NorthWind %>"
60 SelectCommand="Wählen Sie Kunden-ID, Firmennamen und Land aus Kunden aus, wobei Land=@Land ">
61 <Parameter auswählen>
62 <asp:ControlParameter Name="Country" ControlID="DropDownList1" PropertyName="SelectedValue" />
63 </SelectParameters>
64 </asp:SqlDataSource>
65 <div>
66 <asp:DropDownList ID="DropDownList1" runat="server" Breite="239px"
67 DataSourceID="SqlDataSource1" DataTextField="Country" DataValueField="Country">
68 </asp:DropDownList>
69 <input id="Button4" type="button" value="Refresh" onclick="CallServer2(DropDownList1)"/>
70 </div>
71 <br />
72 <span id="gridspan">
73 <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource2" CellPadding="4" ForeColor="#333333" GridLines="None">
74 <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
75 <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
76 <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
77 <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
78 <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
79 <AlternatingRowStyle BackColor="White" />
80 </asp:GridView>
81 </span>
82 </div>
83 </form>
84</body>
85</html>
86
testAJAX.aspx.vb
1
2Importsystem
3Importiert System.Data
4Importiert System.Configuration
5Importiert System.Web
6Importiert System.Web.Security
7Importiert System.Web.UI
8Importiert System.Web.UI.WebControls
9Importiert System.Web.UI.WebControls.WebParts
10Importiert System.Web.UI.HtmlControls
11Importiert System.IO
12Imports System.Globalisierung
13
14Teilweiser öffentlicher KlassentestAJAXKlassentestAJAX
15 erbt System.Web.UI.Page
16 Implementiert ICallbackEventHandler
17 Protected Sub Page_Load()Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
18 'Client-Ereignisverarbeitungsmethode registrieren
19 'Es scheint, dass dieser Satz nicht funktioniert hat, also habe ich einen zusätzlichen Button4 hinzugefügt, um das Client-Ereignis von AndyDavis auszulösen
20 DropDownList1.Attributes.Add("onchange", "CallServer2(this)")
21 „Das Client-Ereignis von Button3 kann direkt in der OnClientClick-Eigenschaft in der IDE festgelegt werden, AndyDavis muss es hier nicht hinzufügen.“
22 'Button3.Attributes.Add("onclick", "CallServer1(TextBox2, Label3);return false;")
23 Ende Sub
vierundzwanzig
25 Privater ServerReturn As String
26
27 Öffentliche Funktion GetCallbackResult()Function GetCallbackResult() As String Implementiert ICallbackEventHandler.GetCallbackResult
28 „Um den Ladeeffekt besser erkennen zu können, fügen Sie eine Verzögerung hinzu.“
29 System.Threading.Thread.Sleep(2000)
30
31 Dim parts() As String = serverReturn.Split("|"c)
32 'Aufruf entsprechend dem übergebenen Methodennamen und Übergabe der entsprechenden Parameter. Derzeit wird nur ein Parameter unterstützt
33 Return CStr([GetType]().GetMethod(parts(0)).Invoke(Me, New Object() {parts(1)}))
34 Endfunktion
35
36
37 Public Sub RaiseCallbackEvent()Sub RaiseCallbackEvent(ByVal eventArgument As String) Implementiert ICallbackEventHandler.RaiseCallbackEvent
38 serverReturn = eventArgument
39 Ende Sub
40
41 „Übersetzen Sie den vom Kunden übermittelten englischen Ländernamen oder die Abkürzung in den entsprechenden chinesischen Ländernamen.“
42 Öffentliche Funktion ServerMethod1()Function ServerMethod1(ByVal arg As String) As String
43 Dim s As String = ""
44 Wählen Sie Case arg.ToLower()
45 Fall „cn“
46 Etui „Porzellan“
47 s = „China“
48 Exit Select
49 Fall „uns“
50 s = „Vereinigte Staaten“
51 Exit Select
52 Fall sonst
53 s = „Unbekanntes Land“
54 Exit Select
55 Endauswahl
56 Retouren
57 Endfunktion
58
59 'Aktualisieren Sie den Inhalt der GridView basierend auf dem vom Client übergebenen Wert und geben Sie den aktualisierten HTML-Code der GridView zurück
60 Öffentliche Funktion ServerMethod2()Function ServerMethod2(ByVal arg As String) As String
61 DropDownList1.SelectedValue = arg
62 GridView1.DataBind()
63
64 Return RenderControl(GridView1)
65 Endfunktion
66
67 Private Überladungen Function RenderControl()Function RenderControl(ByVal control As Control) As String
68 Dimwriter1 As StringWriter = New StringWriter(CultureInfo.InvariantCulture)
69 Dimwriter2 As HtmlTextWriter = New HtmlTextWriter(writer1)
70
71 control.RenderControl(writer2)
72 Writer2.Flush()
73writer2.Close()
74
75 Writer1.ToString() zurückgeben
76 Endfunktion
77Klasse beenden
78